二十三種設計模式之組合模式

2021-08-05 20:18:45 字數 2610 閱讀 5661

組合模式:將物件聚合成樹形結構來表現「整體/部分」的層次結構。

組合模式能讓客戶以一致的方式來處理個別物件以及物件組合。

也就是我們可以忽略物件組合與個體之間的差別。

應用場景 餐廳合併列印主選單 子選單

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 外觀模式...