Java设计模式<装饰器模式>
意图
- 态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活
场景
- 在不想增加很多子类的情况下扩展类
解决的问题
- 一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀
实现方式
增加一个原有接口的实现类,并持有需要进行功能扩展的类,对实现的方法进行扩展
Demo
增加绿色小汽车,让其能够飞翔
定义小汽车能run
public interface CarService {
public void run();
}
绿色小汽车实现CarService
public class GreenCar implements CarService{
public void run() {
System.out.println("i am a green car ,I can run");
}
}
定义绿色小气车进行装饰
public class GreenCarDecorator implements CarService{
private CarService CarService;
public GreenCarDecorator(CarService carService){
this.CarService = carService;
}
public void run() {
CarService.run();
fly();
}
private void fly(){
System.out.println("i am green car ,i not only can run but also can fly now");
}
}
测试类
public class DemoMain {
public static void main(String[] args) {
CarService carService = new GreenCarDecorator(new GreenCar());
carService.run();
}
}
输出
i am a green car ,I can run
i am green car ,i not only can run but also can fly now
网友评论