设计模式--装饰者模式

来源:互联网 发布:java 反射 实例化单例 编辑:程序博客网 时间:2024/06/06 09:40

一、装饰者设计模式:增强一个类的功能,而且还可以让这些装饰类互相装饰。

装饰者设计模式的步骤:
1. 在装饰类的内部维护一个被装饰类的引用。
2. 让装饰类有一个共同的父类或者是父接口。
二、继承实现的增强类和修饰模式实现的增强类有何区别?

继承实现的增强类:
优点:代码结构清晰,而且实现简单.
缺点:对于每一个的需要增强的类都要创建具体的子类来帮助其增强,这样会导致继承体系过于庞大。

修饰模式实现的增强类:
优点:内部可以通过多态技术对多个需要增强的类进行增强, 可以是这些装饰类达到互相装饰的效果。使用比较灵活。

缺点:需要内部通过多态技术维护需要被增强的类的实例。进而使得代码稍微复杂。

三、案例

class A {    A(参数){        //构造函数    }    public MM(){        // 函数    }}//继承A类class B extends A{    A a;//父类接口    B(A a){        super(a);//如果是无参数就写super();此语句是避免代码报错,初始化父类        this.a=a;//本类初始化    }    public MM(){    //B 的方法    }}class B1 extends A{    A a;    B1(A a){        super(a);         this.a=a;     }    public MM(){    //B1 的方法    }}...//其他类型的B类变量class Cpublic static void main(String[] args){        A a=new A(变量);        B b=new B(a);        B1 b1=new B1(b);        ...        //利用相同的父类,相互调用,实现互相装饰  B 和B1 没有前后顺序    }}
0 0
原创粉丝点击