装饰器模式
1.使用分层对象来动态透明的向单个对象中添加责任(功能)。
2.装饰器指定包装在最初的对象周围的所有对象都具有相同的基本接口。 3.某些对象是可装饰的,可以通过将其他类包装在这个可装饰对象的四周,来将功能分层。
4.装饰器必须具有和他所装饰的对象相同的接口。
**继承实现的增强类:**
优点:代码结构清晰,而且实现简单
缺点:对于每一个的需要增强的类都要创建具体的子类来帮助其增强,这样会导致继承体系过于庞大。
**修饰模式实现的增强类:**
优点:内部可以通过多态技术对多个需要增强的类进行增强
缺点:需要内部通过多态技术维护需要增强的类的实例。进而使得代码稍微复杂。
示例
class Human{
public Human(){
}
public void work(){
System.out.println("工作工作");
}
}
class Son extends Human{
Human human;
public Son( Human h ){
this.human = h;
}
public void work(){
human.work();
System.out.println("画画....");
}
}
class Mother extends Human{
Human human;
public Mother(Human human){
this.human = human;
}
public void work(){
human.work();
System.out.println("填涂料....");
}
}
class Father extends Human{
Human human;
public Father( Human human ){
this.human = human;
}
@Override
public void work() {
human.work();
System.out.println("加画框....");
}
}
public class demo1 {
public static void main(String[] args) {
Human human = new Human();
Son son = new Son(human);
Mother mother = new Mother(son);
Father father = new Father(mother);
father.work();
}
}
/*output:
工作工作
画画....
填涂料....
加画框....
*/