标签:对象 stat ora 类型 new image ring png nts
动态的给一个对象添加一些额外的职责。它使用客户端透明的方式来扩展对象功能,并且该模式要比继承更为灵活。
不能采用生成子类的情况进行扩充。其一是有大量的扩展,为了支持每种组合需要产生大量的子类,使子类数目呈现爆炸性增长。其二是类的定义被隐藏或者不能用来生成子类。
具体装饰:实现抽象装饰者角色,负责对具体构建添加额外功能。
Component
public interface Person{
void say();
}
ConcreteComponent
public class Man implements Person{
public void say(){
System.out.println("hello,");
}
}
Decorator
public abstract class Decorator implements Person{
protected Person person;
public void setPerson(Person person){
this.person = person;
}
public void say(){
person.say();
}
}
ConcreteDecorator
public class menDecoratorA extends Decorator{
public void say(){
super.say();
reSay();
System.out.println("menDecoratorA类");
}
public void reSay(){
System.out.println("Nice to meet you!");
}
}
public class menDecoratorB extends Decorator{
public void say(){
super.say();
System.out.println("How are you");
System.out.println("menDecoratorB类");
}
}
Test
public class Main{
public static void main(String args[]){
Man man = new Man();
menDecoratorA md1 = new menDecoratorA();
menDecoratorB md2 = new menDecoratorB();
md1.setPerson(man);
md2.setPerson(md1);
md2.say();
}
}
标签:对象 stat ora 类型 new image ring png nts
原文地址:https://www.cnblogs.com/holaJava/p/12000133.html