demo事例:用裝飾模式編寫給人裝飾比如穿衣、庫、鞋等程序
Persion.java
/**
* 人
* @author Persion
*
*/
public class Persion {
private String name;
public Persion(){}
public Persion(String name){
this.name = name;
}
public void show(){
System.err.print("裝扮:"+name+" ");
}
}
Finery.java
public class Finery extends Persion{
protected Persion persion;
public void Decorate(Persion persion){
this.persion=persion;
}
public void show(){
if(persion != null){
persion.show();
}
}
}
BigTrouser .java
public class BigTrouser extends Finery {
@Override
public void show(){
System.out.print("褲子 ");
persion.show();
}
}
TShrts .java
public class TShrts extends Finery{
@Override
public void show(){
System.out.print("大T恤 ");
persion.show();
}
}
Test .java
/**
* 裝飾模式
* @author lucksheep
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Persion persion=new Persion("小肥羊");
TShrts shrts=new TShrts();
BigTrouser bt=new BigTrouser();
shrts.Decorate(persion);
bt.Decorate(shrts);
bt.show();
}
}
裝飾模式總結下:
1、一般呢就是把類中的裝飾功能搬移出去,簡化原有的類。
2、有效的把類的核心職責和裝飾的功能分開,并且可以去除相關類中重復的裝飾邏輯