【23種設計模式】之 組合模式(Composite Pattern)
需求:
(1)需要某種樹形結構,可以容納選單、子選單和選單項
(2)需要確定能夠在每個選單的各個項之間遊走,而且至少要像現在用迭代器一樣方便。
(3)需要能夠更有彈性地在選單項之間遊走。比方說:可能只需要遍歷甜點選單,或者可以遍歷餐廳的整個選單(包括甜點選單在內)
組合模型:允許你將物件組合成樹形結構來表現“整體/部分”層次結構。組合能讓客戶以一致的方式處理個別對象以及物件組合。
作用:這個模式能夠建立一個樹形結構,在同一個結構中處理巢狀選單和選單項組。
Tips:
①將MenuItem(葉節點)看作成沒有孩子的節點。
②Menu裡既能新增Menu,也能新增MenuItem。
③MenuComponent裡包含MenuItem和Menu的所有方法。
④MenuItem和Menu只實現需要的方法,其他方法均丟擲UnsupportedOperationException()
相關推薦
【23種設計模式】之 組合模式(Composite Pattern)
需求: (1)需要某種樹形結構,可以容納選單、子選單和選單項 (2)需要確定能夠在每個選單的各個項之間遊走,而且至少要像現在用迭代器一樣方便。 (3)需要能夠更有彈性地在選單
【java設計模式】之 模板方法(Template Method)模式
1. 模板方法的一個例項 這一節主要來學習一下設計模式中的模板方法模式。我們先來看一個例子:假如現在老闆讓你做一個汽車的模型,要求只要完成基本功能即可,不考慮擴充套件性,那你會怎麼做呢?我們首先會根據經驗設計一個類圖: 由這個類圖可知,非
【設計模式】之模板方法(Template Method)
模板方法的定義為:再一個操作中定義一個演算法的骨架,將演算法中的一些步驟延遲到子類去實現。模板方法允許子類在不該變演算法結構的情況下重新定義演算法的某些步驟。 Define the skeleton of an algorithm in an operation, defe
【深入Java虛擬機器】之十早期(編譯期)優化
轉自:https://blog.csdn.net/tjiyu/article/details/53786262 Java編譯(二)Java前端編譯: Java原始碼編譯成Class檔案的過程 &n
【23種設計模式】之 目錄
一、建立型模式(五種): 單例模式 建造者模式 原型模式 二、結構型模式(七種): 介面卡模式 裝飾器模式 代理模式 外觀模式 橋接
【23種設計模式】結構型模式 > 介面卡模式
介面卡模式(Adapter Pattern) 用來消除不相容性。我的膝上型電腦的工作電壓是20V,而我國的家庭用電是220V,如何讓20V的膝上型電腦能夠在220V的電壓下工作?答案是引入一個電源介面卡(AC Adapter),俗稱充電器或變壓器,有了這個電源介面卡,生活用
【JAVA設計模式】9.組合模式
目錄即是最經典的組合模式實踐,一個物件由多個物件(可以是自身型別)組合而成,形成一個複雜的物件 UML圖: 首先定義一個總介面,用於定義所有元件,所有元件都實現該介面: interface IComponent { void operation();
【設計模式】之代理模式
1.模式動機與定義 代理模式定義:為其他物件提供一種代理以控制物件的訪問。 2.模式結構與分析 proxy.png /** * 定義了RealSubject和Proxy的共同介面,使得在任何使用RealSubject的地方都可以使用Proxy */ public interface Subject
【java設計模式】之 單例(Singleton)模式
1. 單例模式的定義 單例模式(Singleton Pattern)是一個比較簡單的模式,其原始定義如下:Ensure a class has only one instance, and provide a global point of access
【java設計模式】之 責任鏈(chain of resposibility)模式
責任鏈模式,顧名思義,就是一條鏈。這個鏈到底是怎麼執行的呢?它主要是將能夠處理同一類請求的物件連成一條鏈,所提交的請求沿著鏈傳遞,鏈上的物件逐個判斷是否有能力處理該請求,如果能則處理,如果不能則
【java設計模式】之 建造者(Builder)模式
我們還是舉上一節的例子:生產汽車。上一節我們通過模板方法模式控制汽車跑起來的動作,那麼需求是無止境的,現在如果老闆又增加了額外的需求:汽車啟動、停止、鳴笛引擎聲都由客戶自己控制,他想要什麼順序就什麼順序,那該如何做呢? 1. 汽車無休止的改造
【Java設計模式】之備忘錄模式
1. 定義 備忘錄(Memento):在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。 2. 備忘錄模式的類圖 Originator(發起人):負責建立一個備
設計模式之組合模式(Composite Pattern)
組合模式(Composite Pattern),又叫部分整體模式,是用於把一組相似的物件當作一個單一的物件。組合模式依據樹形結構來組合物件,用來表示部分以及整體層次。這種型別的設計模式屬於結構型模式,它建立了物件組的樹形結構。 介紹 意圖:將物件組合成樹形結構以表示"部分-整體"的層次結構。
Unity3D 設計模式學習之組合模式
前言 對應遊戲中的UI部分,可以使用分層式管理,將2D元件按照功能關係按層次擺放,是比較容易瞭解、設計和修改的。 分層式管理一般也稱樹狀結構,常用於軟體實現和應用中的一種結構。 GOF對於組合模式Composite的定義是: “將物件以樹狀結構組合,
設計模式系列之組合模式(Composite Pattern)——樹形結構的處理
說明:設計模式系列文章是讀`劉偉`所著`《設計模式的藝術之道(軟體開發人員內功修煉之道)》`一書的閱讀筆記。個人感覺這本書講的不錯,有興趣推薦讀一讀。詳細內容也可以看看此書作者的部落格`https://blog.csdn.net/LoveLion/article/details/17517213` ## 模
C#設計模式(10)——組合模式(Composite Pattern)
詳細 ext bstr write move complex 存在 span remove 一、引言 在軟件開發過程中,我們經常會遇到處理簡單對象和復合對象的情況,例如對操作系統中目錄的處理就是這樣的一個例子,因為目錄可以包括單獨的文件,也可以包括文件夾,文件夾又是由文件組
重走Java設計模式——組合模式(Composite Pattern)
組合模式 定義 組合模式(Composite Pattern),又叫部分整體模式,是用於把一組相似的物件當作一個單一的物件。組合模式依據樹形結構來組合物件,用來表示部分以及整體層次。這種型別的設計模式屬於結構型模式,它建立了物件組的樹形結構。 這種模式建立了一個包含自己物
RDIFramework.NET -.NET快速資訊化系統開發整合框架 【開發例項 EasyUI】之產品管理(WebForm版)
RDIFramework.NET—.NET快速開發整合框架 【開發例項】之產品管理(WebForm版) 第1部分 概述 RDIFramework.NET,基於.NET的快速資訊化系統開發、整合框架,為企業或個人在.NET環境下快速開發系統提供了強大的支援,開發人 員不需要開發系統的基礎功能和公
RDIFramework.NET-.NET快速資訊化系統開發整合框架 【開發例項 EasyUI】之產品管理(MVC版)
RDIFramework.NET—.NET快速開發整合框架 【開發例項】之產品管理(MVC版) 第1部分 概述 RDIFramework.NET,基於.NET的快速資訊化系統開發、整合框架,為企業或個人在.NET環境下快速開發系統提供了強大的支援,開發人員不需要開發系統的基礎功能和公共模組,框架
RDIFramework.NET—.NET快速開發整合框架 【開發例項 EasyUI】之產品管理(WebForm版)
RDIFramework.NET—.NET快速開發整合框架【開發例項】之產品管理(WebForm版)第1部分 概述 RDIFramework.NET,基於.NET的快速資訊化系統開發、整合框架,為企業或個人在.NET環境下快速開發系統提供了強大的支援,開發人 員不需要開發