Java设计模式

装饰(Decorator)设计模式

  • 动态的给一个对象添加一些额外的功能,就增加功能这一点来说,装饰模式比生成子类更加的灵活
  • 在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能(这就是装饰设计模式的好处)
  • 装饰设计模式是创建一个包装对象,也就是使用装饰来包裹真实的对象

应用场景:

  • 需要拓展一个类的功能,或者是给一个类添加附加的职责
  • 当不能采用生成子类来实现时,就比如说是final类

装饰模式的实现方式:

  • 装饰对象和真实对象有相同的接口
  • 装饰对象包含一个真实对象的引用
  • 装饰对象的所有方法,内部实现都是通过真实对象的引用来调用的,然后实现自己的功能、

 一个小小的例子:

package null08060056;
//装饰设计模式的演示

public class Demo01 {

    public static void main(String[] args) {

        //调用
        Son son = new Son(new Father());
        son.publicCan();
        
    }

}
//创建一个接口或者是抽象类
interface Interface{
    public void publicCan();
}
final class Father implements Interface{

    @Override
    public void publicCan() {
        System.out.println("I can eat");
    }
}
//我先在想要定义一个class Son使Son也有Father一样的publicCan,但是不能继承啊,那就只能装饰了
class Son implements Interface{
    private Father i;
    public Son(Father obj) {
        this.i = obj;
    }

    @Override
    public void publicCan() {
        i.publicCan();
        System.out.println("I also can sleep");
    }
    
}

未完待续......

原文地址:https://www.cnblogs.com/smiling-crying/p/9426426.html