組合模式:將物件聚合成樹形結構來表現「整體/部分」的層次結構。
組合模式能讓客戶以一致的方式來處理個別物件以及物件組合。
也就是我們可以忽略物件組合與個體之間的差別。
應用場景 餐廳合併列印主選單 子選單
public abstract class menucomponent
public string getdescription()
public float getprice()
public boolean isvegetable()
public abstract void print();
public iterator getiterator()}
public class menuitem extends menucomponent
@override
public string getname()
@override
public string getdescription()
@override
public float getprice()
@override
public boolean isvegetable()
@override
public void print() }
public class nulliterator implements iterator
@override
public object next()
@override
public void remove() }
public class composeiterator implements iterator
@override
public boolean hasnext()
iterator iterator = stack.peek();
if(!iterator.hasnext())else
}@override
public object next()
return null;
}@override
public void remove() }
public class submenu extends menucomponent
public void additem(string name ,string description,boolean vegetable,float price)
@override
public void print()
@override
public iterator getiterator() }
public class cakehousemenu extends menucomponent
public void additem(string name ,string description,boolean vegetable,float price)
public arraylistgetmenuitems()
public void setmenuitems(arraylistmenuitems)
@override
public void print()
@override
public iterator getiterator() }
public class dinermenu extends menucomponent
public void additem(string name ,string description,boolean vegetable,float price)else
}private void addsubmenu(menucomponent menucomponent)else
}public static int getmax_items()
public int getnumberofitems()
public void setnumberofitems(int numberofitems)
public menucomponent getmenuitems()
public void setmenuitems(menuitem menuitems)
@override
public void print()
public iterator getiterator()
class dineriterator implements iterator
@override
public boolean hasnext()
return false;
}@override
public object next()
@override
public void remove()
}} public class waitress
public void addcomponent(menucomponent menucomponent)
public void printmenu()}}
} public class maintest
}
二十三種設計模式之工廠模式
工廠模式的核心 例項化物件 原因 有些物件不能直接例項化,比如介面 抽象類及複雜物件的其他依賴 核心 呼叫工廠class的靜態方法例項化物件 以日誌為例 public class staticfactory 核心 先建立工廠物件,之後呼叫工廠方法 例項化工廠模式 public class insta...
二十三種設計模式之模板設計模式
按照我的理解來說,就是乙個流程中,總體的步驟是固定的,但有些步驟是改變的,例如我們做煎蛋這個過程,有哪些步驟是固定的呢,打蛋,下鍋,上碟都是固定的,但有時候我們想吃鹹的,有時候想吃甜的,所以在說放佐料的步驟是改變的。所有的設計模式都是把變化點和固定點分離開來,所謂的固定和變化是相對的,例如我們有乙個...
二十三種設計模式 羅列
1 工廠方法模式 factory method 2 抽象工廠模式 abstract factory 3 單例模式 singleton 4 建造者模式 builder 5 原型模式 prototype 6 介面卡模式 adapter 7 裝飾模式 decorator 8 模式 proxy 9 外觀模式...