裝飾器模式

理解:

    裝飾器模式是便於擴展,在一個最基本的對象中,不斷追加新工功能(裝飾),滿足需求,對象都是獨立的;

如果利用繼承,繼承是單繼承不便於以後擴展其他功能;


舉例:

    人吃飯,有錢人吃飯,神仙吃飯;

    檢驗字段非空;轉義html;***合法性;



     public interface Decorator {
        public String eat();
    }


//基類

    public class Person implements Decorator{

    @Override
    public String eat() {
        return "吃飯";
    }
}


//裝飾類

public abstract class FilterPerson implements Decorator{
    protected Decorator p;
    public FilterPerson(Decorator p) {
        this.p=p;
    }
    @Override
    public String eat() {
        return p.eat();
    }
}



//富人吃飯

public class SuperPerson extends FilterPerson{

    public SuperPerson(Decorator p) {
        super(p);
    }
    
    public String eat(){
        return  "先來杯酒;"+p.eat()+";再來根菸";
    }

}



public class GodPerson extends FilterPerson{

    public GodPerson(Decorator p) {
        super(p);
    }

    public String eat(){
        return "喝個人蔘湯;"+p.eat()+";唱個歌";
    }

}


//測試

public class Test {
    public static void main(String[] args) {
        Decorator p=new Person();
        System.out.println(p.eat());
        Decorator superp=new GodPerson(new SuperPerson(p));
        System.out.println(superp.eat());
    }
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章