設計模式之組合模式與迭代器模式

2021-09-03 08:12:16 字數 2021 閱讀 7788

讀書筆記:headfirst 設計模式 ,大話設計模式

使用場景

單一責任原則

單一責任: 乙個類應該只有乙個引起變化的原因

內聚:用來度量乙個類或模組緊密的達到單一目的或責任 類圖

迭代器模式:提供一種方法順序訪問乙個聚合物件中的各個元素,而又不暴露該物件的內部表示

空迭代器

如果集合中沒有什麼可以遍歷的,有兩種選擇

返回null,但是**就需要判斷返回值是否為null

返回乙個空迭代器,這個迭代器的hasnext永遠返回false

**案例

// 測試

public class testclient

}}結果:ab

c// 迭代器介面

public inte***ce myiterator

// 迭代器實現

public class concreteiteratorimplements myiterator

@override

public boolean hasnext()

mark = 0;

return false;

}@override

public t next()

}// 聚集介面

public inte***ce aggregate

// 聚合實現類

public class concreteaggregateimplements aggregate

@override

public void add(t t)

}

組合模式:將物件組合成樹形結構以表示"部分-整體"的層次結構.組合模式使得使用者對單個物件和組合物件的使用具有一致性

類圖

使用場景

**案例

// 測試

public class componenttest

}結果:

-根---葉子a

---分支b

-----分支b1

-----葉子b2

---分支c

-----分支c1

-----葉子c2

// 組合介面

public inte***ce component

// 組合抽象預設實現

public abstract class componentdefault implements component

@override

public void add(component t)

@override

public void remove(component t)

@override

public void display(int depth)

system.out.println(sb.tostring()+name);

}}// 葉子節點

public class leaf extends componentdefault

}// 組合節點

public class composite extends componentdefault

@override

public void add(component t)

@override

public void remove(component t)

@override

public void display(int depth) }}

設計模式之迭代器和組合模式

迭代器模式 1 簡介 迭代器模式提供一種方法訪問乙個聚合物件中的各個元素,而 不暴露其內部實現方式。1 它讓我們能夠遊走在各種聚合型別資料的每乙個元素之間,而有無需讓大家知道遊走的什麼型別的聚合,反正都能夠達到迴圈輸出元素的目的。2 它能夠把遊走的任務搬到迭代器上,而不再使用各種適合自己聚合型別的f...

設計模式 狀態模式組合模式迭代器模式

狀態模式 將物件的轉換封裝在內部組合模式 元件在內部具有特定的資料結構 使用者操作 但是不想讓得知內部的實施細節 使用者對元件的內部的物件操作 使用者操作乙個物件多型呼叫 執行時依賴 編譯是確定型別 編譯時多型 大作業的時候要求加入這個的理解 效能較好迭代器模式 獲得當前的元素 下乙個元素 開頭是否...

設計模式 迭代器和組合模式

給餐廳選單加入乙個迭代器 public inte ce iterator boolean hasnext object next public class dinermenuiterator implements iterator menuitem items int position 0 publ...