設計模式 迭代器模式

2021-09-26 07:41:37 字數 2053 閱讀 8236

蛋糕店和中餐廳需要合併,然後如何管理選單,能夠讓服務員報出所有菜品。

(選單包含所有菜品,蛋糕店使用arraylist管理的選單,中餐廳使用陣列管理)

蛋糕店的設計:

public class cakehousemenu 

private void additem(string name, string description, boolean vegetable,

float price)

public arraylistgetmenuitems()

//其他功能**

}

中餐廳的設計:

public class dinermenu 

private void additem(string name, string description, boolean vegetable,

float price) else

}public menuitem getmenuitems()

}

如此設計兩個餐館存在問題:將資料直接暴露,不安全。構建女服務員類,合併列印兩個餐館的菜品

//菜品格式化儲存

public class menuitem

public string getname()

public string getdescription()

public float getprice()

public boolean isvegetable() }

//女服務員主體

public class waitress

public void printmenu()

for (int i = 0, len = mdinermenu.numberofitems; i < len; i++)

}}

問題:對擴充套件性不好,增加新的菜館的加入,需要修改**。迭代器模式:提供一種方法順序訪問乙個聚合物件中的各個物件

迭代器:iterator

public inte***ce iterator
餐廳使用組合的方式實現iterator

public class dinermenu 

private void additem(string name, string description, boolean vegetable,

float price) else

} public iterator getiterator()

//此處使用了組合的方式(原因是能用組合就不用繼承)

class dineriterator implements iterator

@override

public boolean hasnext()

return false;

} @override

public object next()

};}public class cakehousemenu

private void additem(string name, string description, boolean vegetable,

float price)

public iterator getiterator()

class cakehouseiterator implements iterator

@override

public boolean hasnext()

public void additerator(iterator iterator)

public void printmenu()

} }

}

設計模式 迭代器模式

迭代器模式是屬於物件行為性的模式。首先是定義 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露物件的表示方法。迭代器的結構圖 適用性 1 訪問乙個聚合物件的內容而無需暴露它的內部表示 2 支援聚合物件的多種遍歷 3 為遍歷不同的聚合結構提供乙個統一的介面 支援多型迭代 協作 concretei...

設計模式 迭代器模式

iterator,提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部 透明地訪問集合內部的資料。iterator迭代器抽象類 迭代器抽象類 abstract clas...

設計模式 迭代器模式

迭代器模式在我們日常程式設計中使用非常頻繁,像list map 陣列等都會用到迭代器模式。迭代器模式屬於行為型模式,它用於順序訪問集合物件的元素,不需要知道集合物件的底層表示。在迭代器模式結構圖中包含如下幾個角色 它支援以不同的方式遍歷乙個聚合物件。迭代器簡化了聚合類。在同乙個聚合上可以有多個遍歷。...