所屬技術領域:
雲原生
| 名詞定義 |
即容器中的設計模式,包含疊代器模式和擴充卡模式。疊代器模式即提供一種方法通路一個容器對象中各個元素,而又不暴露該對象的内部細節。擴充卡模式及即擴充卡模式是23種中設計模式之一,它的主要作用是在新接口和老接口之間進行适配。它非常像我們出國旅行時帶的電源轉換器,我們國家的電器使用普通的扁平兩項或三項插頭,而去外國的話,使用的标準就不一樣了,比如德國,使用的是德國标準,是兩項圓頭的插頭。如果去德國旅遊,那麼我們使用的手機充電器插頭無法插到德國的插排中去,那就意味着我們無法給手機充電。怎樣解決這個問題呢?隻要使用一個電源轉化器就行了。
| 技術特點 |
1、依賴(Dependence)
依賴關系的定義為:對于兩個相對獨立的對象,當一個對象負責構造另一個對象的執行個體,或者依賴另一個對象的服務時,這兩個對象之間主要展現為依賴關系。定義比較晦澀難懂,但在java中的表現還是比較直覺的:類A當中使用了類B,其中類B是作為類A的方法參數、方法中的局部變量、或者靜态方法調用。類上面的圖例中:People類依賴于Book類和Food類,Book類和Food類是作為類中方法的參數形式出現在People類中的。
2、關聯(Association)
對于兩個相對獨立的對象,當一個對象的執行個體與另一個對象的一些特定執行個體存在固定的對應關系時,這兩個對象之間為關聯關系。關聯關系分為單向關聯和雙向關聯。在java中,單向關聯表現為:類A當中使用了類B,其中類B是作為類A的成員變量。雙向關聯表現為:類A當中使用了類B作為成員變量;同時類B中也使用了類A作為成員變量。
3、聚合(Aggregation)
聚合關系是關聯關系的一種,耦合度強于關聯,他們的代碼表現是相同的,僅僅是在語義上有所差別:關聯關系的對象間是互相獨立的,而聚合關系的對象之間存在着包容關系,他們之間是“整體-個體”的互相關系。
4、繼承(Generalization)
繼承表示類與類(或者接口與接口)之間的父子關系。在java中,用關鍵字extends表示繼承關系。UML圖例中,繼承關系用實線+空心箭頭表示,箭頭指向父類。
5、實作(Implementation)
表示一個類實作一個或多個接口的方法。接口定義好操作的集合,由實作類去完成接口的具體操作。在java中使用implements表示。UML圖例中,實作關系用虛線+空心箭頭表示,箭頭指向接口。
疊代器模式的結構
抽象容器(Aggretate):一般是一個接口,提供一個iterator()方法,例如java中的Collection接口,List接口,Set接口等。
具體容器(ConcreteAggretate):就是抽象容器的具體實作類,比如List接口的有序清單實作ArrayList,List接口的連結清單實作LinkList,Set接口的哈希清單的實作HashSet等。
抽象疊代器(Iterator):定義周遊元素所需要的方法,一般來說會有這麼三個方法:取得第一個元素的方法first(),取得下一個元素的方法next(),判斷是否周遊結束的方法isDone()(或者叫hasNext()),移出目前對象的方法remove(),
疊代器實作(ConcretateIterator):實作疊代器接口中定義的方法,完成集合的疊代。
資料來源:
1、 阿裡雲大學-視訊網站
2、 CSDN-資訊平台