java設計模式之Composite Pattern(組合模式)
組合模式是面向可維護性編程的一種常見的設計模式。簡單的說就是一個類裏面有一組當前類組成的collection作為這個類的屬性。這和遞歸有一定的相似。他的目的就是在同類型對象之間建立起樹形層次結構,一個上層對象可以包含多個下層對象。例如一個菜單可以有很多的選項,同時這些選項中也可能包含下一層的菜單,這樣菜單和菜單之間的這種關系就可理解為組合模式。其對應的UML圖可以總結為:
由UML圖可以看出,一個具體類實現了一個結構,同時,這個具體類中還包含一個field,這個filed由這同一個接口的實現類組成。這也就構成了我們前面說的同類型的對象,之間的樹形層次結構,上層對象可以包含多個下層對象。
下面我們給出實際代碼體會一下:
java設計模式之Composite Pattern(組合模式)
相關推薦
java設計模式之Composite Pattern(組合模式)
In ima field 編程 這也 composite 當前 屬性 OS 組合模式是面向可維護性編程的一種常見的設計模式。簡單的說就是一個類裏面有一組當前類組成的collection作為這個類的屬性。這和遞歸有一定的相似。他的目的就是在同類型對象之間建立起樹形層次結構,一
設計模式總結之Proxy Pattern(代理模式)
目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Proxy Pattern(代理模式) 意圖 為其他物件提供一種代理以控制對這個物件的訪問。適用性 在需要用比較通用和複雜的物件指標代替簡單的指標的時候,使用Proxy模式。下面是一些可以使用Proxy模式常
設計模式總結之Visitor Pattern(訪問者模式)
目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Visitor Pattern(訪問者模式) 意圖 表示一個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。適用性 * 一個物件結構包含很多類物件,它們有不同的
設計模式總結之Adapter Pattern(介面卡模式)
目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Adapter Pattern(介面卡模式) 意圖 將一個類的介面轉換成另外一個客戶希望的介面。Adapter 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。 注:介面卡模式在詳細設計階段不需
Java設計模式之十二(代理模式)
一、什麼是代理模式 Proxy模式又叫做代理模式,是構造型的設計模式之一,它可以為其他物件提供一種代理(Proxy)以控制對這個物件的訪問。 所謂代理,是指具有與代理元(被代理的物件)具有相同的介面的類,客戶端必須通過代理與被代理的目標類互動,而代理一般在互動的過程中(互
設計模式總結之Facade Pattern(外觀模式)
目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Facade Pattern(外觀模式) 意圖 為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。適用性 * 當你要為一個複雜子系統提供一個簡單介
設計模式總結之Prototype Pattern(原型模式)
目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Prototype Pattern(原型模式) 意圖 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。適用性 •當要例項化的類是在執行時刻指定時,例如,通過動態裝載; •為了避免建立一個與產
設計模式之工廠方法(Factory Method)
一 目的 定義一個建立物件的介面,但是讓他的子類去決定初始化哪種型別。工廠方法使得一個類能夠推遲到他的子類去初始化。二 動機 框架運用抽象類來定義和維護物件之間的關係。一個框架經常負責這些物件的建立。考慮一些這麼一個情況:一個能夠展現多個文件的應用程式的框架。在這
Java面向物件之多型(精簡版)
2.1實現條件 在剛剛開始就提到了繼承在為多型的實現做了準備。子類Child繼承父類Father,我們可以編寫一個指向子類的父類型別引用,該引用既可以處理父類Father物件,也可以處理子類Child物件,當相同的訊息傳送給子類或者父類物件時,該物件就會根據
CSS設計美麗之橫排頁面(小作品)
本次作品與前幾次的作品的不同之處在於:這次頁面是橫排顯示的,即用滑鼠左右滾動來檢視網頁。 作品效果: 可以看出,這個文件的width是遠遠大於height,因為使用橫排的顯示方式來佈局頁面,使用滑鼠左右滾動來顯示。 HTML程式碼: <!DOCTYPE h
java 影象特效之影象混合(溶圖)
photoshop中的圖層混合功能大家一定很熟悉。此功能可以根據指定模式,將2個圖層進行混合,實現不同色彩風格的影象效果,也就是我們通常所說的溶圖。 實現影象混合的原理其實很簡單,就是將兩張影象的重疊,分別取相同位置的兩個畫素點上的RGB值,通過特定的公式計算出新的RGB
【20180927】【C/C++基礎知識】程式的模組化設計,拿球遊戲(組合問題),漢諾塔遊戲(遞迴問題),報數遊戲(斷點+記憶體除錯),遞迴與迭代
目錄 一、模組化設計思想和方法 模組化設計方法:自頂向下設計,自下向上程式設計實現的設計方法。 學生成績管理系統,若所有功能都在主函式中實現,程式的可讀性、可修改性都很差,因此我們每個功能分別用一個函式來實現,主函式方便快捷的呼叫這些函式即可(模組化)。
操作型模式之Template Method(模板方法)模式
1.如果你期望在一個方法中實現一個演算法,把演算法中的某些步驟的定義推遲到子類中去重新定義,可使用Template Method(模板方法)模式 2.舉例 //演算法框架抽象類 public abstract class AbstractMethod {
死磕 java原子類之終結篇(面試題)
static ets new 點擊 比較 原子操作 地址 累加 turn 概覽 原子操作是指不會被線程調度機制打斷的操作,這種操作一旦開始,就一直運行到結束,中間不會有任何線程上下文切換。 原子操作可以是一個步驟,也可以是多個操作步驟,但是其順序不可以被打亂,也不可以被切割
C#設計模式之十七中介者模式(Mediator Pattern)【行為型】
[] 過多 深入 理解 申請 代碼實現 控制 name 缺點 原文:C#設計模式之十七中介者模式(Mediator Pattern)【行為型】一、引言 今天我們開始講“行為型”設計模式的第五個模式,該模式是【中介者模式】,英文名稱是:Mediator Pattern。還
C#設計模式之十六觀察者模式(Observer Pattern)【行為型】
ngx 現實生活 松耦合 mon html 機制 account current 很好 原文:C#設計模式之十六觀察者模式(Observer Pattern)【行為型】一、引言 今天是2017年11月份的最後一天,也就是2017年11月30日,利用今天再寫一個模式,爭取
C#設計模式之十一享元模式(Flyweight Pattern)【結構型】
eal 客戶 來看 滿足 對象狀態 英文 輔助 3.3 fig 原文:C#設計模式之十一享元模式(Flyweight Pattern)【結構型】一、引言 今天我們要講【結構型】設計模式的第六個模式,該模式是【享元模式】,英文名稱是:Flyweight Pattern。還
C#設計模式之二十三解釋器模式(Interpreter Pattern)【行為型】
要求 ict string 技術 get protect dict site 關鍵字 原文:C#設計模式之二十三解釋器模式(Interpreter Pattern)【行為型】一、引言 今天我們開始講“行為型”設計模式的第十一個模式,也是面向對象設計模式的最後一個模式,先
C#設計模式之二十一訪問者模式(Visitor Pattern)【行為型】
href 集中 動態 元素 lis 聲明 風格 on() 封裝 原文:C#設計模式之二十一訪問者模式(Visitor Pattern)【行為型】一、引言 今天我們開始講“行為型”設計模式的第九個模式,該模式是【訪問者模式】,英文名稱是:Visitor Pattern。如
C#設計模式之二十二備忘錄模式(Memento Pattern)【行為型】
his 備忘錄 很好 car 人的 成功率 構圖 設計模式的 就會 原文:C#設計模式之二十二備忘錄模式(Memento Pattern)【行為型】一、引言 今天我們開始講“行為型”設計模式的第十個模式,該模式是【備忘錄模式】,英文名稱是:Memento Pattern