1、定义
装饰模式:动态给对象添加新功能
写法
public abstract class Person {
public abstract void dressed();
}
public class Girl extends Person {
@Override
public void dressed() {
System.out.println("Girl穿了打底裤");
}
}
public class PersonWrapper extends Person{
private Person mPerson;
public PersonWrapper(Person mPerson) {
this.mPerson = mPerson;
}
@Override
public void dressed() {
mPerson.dressed();
}
}
public class PersonClothSytle extends PersonWrapper{
public PersonClothSytle(Person mPerson) {
super( mPerson );
}
/**
* 穿牛仔裤
*/
private void dressJean(){
System.out.println("穿牛仔裤");
}
/**
* 穿鞋子
*/
private void dressShoes(){
System.out.println("穿鞋子 ");
}
@Override
public void dressed() {
super.dressed();
dressJean();
dressShoes();
}
}
public class TestMain {
/**
* 装饰模式
* 层层给装饰方法添加新内容
* eg context contextwrapper
* 装饰模式比继承更加灵活性
* @param args
*/
public static void main(String[] args) {
Person girl = new Girl();
PersonWrapper wrapper = new PersonWrapper( girl );
wrapper.dressed();
PersonWrapper style = new PersonClothSytle( girl );
style.dressed();
}
}