动态增加额外的功能
interface DPerson{
void eat();
}
class DMan implements DPerson{
@Override
public void eat() {
System.out.println("man eat");
}
}
abstract class Decorator implements DPerson{
protected DPerson person;
public void setPerson(DPerson person) {
this.person = person;
}
@Override
public void eat() {
person.eat();
}
}
class ManDecotatorA extends Decorator{
@Override
public void eat() {
super.eat();
reEat();
System.out.println("ManDecotatorA");
}
public void reEat(){
System.out.println("eat one more");
}
}
class ManDecotatorB extends Decorator{
@Override
public void eat() {
super.eat();
System.out.println("---------");
System.out.println("ManDecotatorB");
}
public void reEat(){
System.out.println("eat one more");
}
}
public class DecoratorTest {
public static void main(String[] args){
DMan man =new DMan();
ManDecotatorA a =new ManDecotatorA();
ManDecotatorB b =new ManDecotatorB();
a.setPerson(man);
b.setPerson(a);
b.eat();
}
}