一、装饰者设计模式:增强一个类的功能,而且还可以让这些装饰类互相装饰。
装饰者设计模式的步骤:
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 C{
public static void main(String[] args){
A a=new A(变量);
B b=new B(a);
B1 b1=new B1(b);
...
//利用相同的父类,相互调用,实现互相装饰 B 和B1 没有前后顺序
}
}