装饰(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"); } }
未完待续......