天天看點

疊代器模式(Iterator Pattern)——管理良好的集合

前言

​ 最近在大佬的帶領下做标簽系統。對于我這樣 設計真是一個很困難的事情,最難的設計被大佬搞定了。其中在設計使用條件時,針對不同的場景插叙條件、使用規則都不相同,同時需要通過使用規則擷取到滿足前端需求的足量标簽,也就是說,擷取到的标簽集合還需要周遊每一個标簽是否在該場景下可用。大佬的設計就采用了疊代器模式。

​ 于是,我在網上看到這樣一個語句片段“疊代器模式(Iterator Pattern)是 Java 和 .Net 程式設計環境中非常常用的設計模式”。直到這個時候我才由衷的知道自己多菜,同時心底裡膜拜了一下我的大佬。

概述

​ 疊代器模式(Iterator Pattern)屬于行為模式。提供一種方法順序通路一個聚合對象中的各個元素,而又不暴露其内部的表示。

​ 把遊走的任務放在疊代器上,而不是聚合上。這樣簡化了聚合的接口和實作,也讓責任各得其所。

涉及的設計原則

​ 單一責任:一個類應該隻有一個引起變化的原因。類的每個責任都有改變的錢在區域。超過一個責任,就意味着超過一個改變的區域。

​ 這個原則告訴我們,盡量讓每個類都保持單一責任。

​ 内聚用來度量一個類或子產品緊密地達到單一目的或者責任。内聚是一個比單一責任原則更普遍概念。遵守單一責任的類容易具有很高的凝聚力,而且比背負很多責任的低内聚類容易維護。

類圖

疊代器模式(Iterator Pattern)——管理良好的集合

抽象疊代器(Iterator):所有疊代器都需要實作的接口,提供了遊走聚合對象元素之間的方法。**

具體疊代器(ConcreteIterator): 利用這個具體的疊代器能夠對具體的聚合對象進行周遊。每一個聚合對象都應該對應一個具體的疊代器。

抽象聚合類(Aggregate)

具體聚合類(ConcreteAggregate:):實作creatIterator()方法,傳回該聚合對象的疊代器。

設計模式的實作

使用場景

​ 如前言,在标簽系統的使用規則中,針對不同的場景,查詢條件不一樣,同時也要需要做标簽的過濾。

代碼實作

不做過多表述,貼出一張修改後的類圖。

疊代器模式(Iterator Pattern)——管理良好的集合

總結

​ 疊代器将周遊的工作封裝進一個對象中;

​ 當使用疊代器的時候,我們依賴聚合提供周遊。

​ 疊代器提供了一個通用的接口,讓我們周遊聚合的項,當我們編碼使用聚合的項時,就可以使用多多态機制了。

繼續閱讀