設計模式-07-裝飾者模式

裝飾者模式

概述

當對象須要添加一些功能,好比在表單的組件添加驗證功能,爲咖啡添加配料,爲窗口添加滾動條等等.此時若是使用繼承的話,會產生不少子類,很差管理,並且,在項目愈來愈大的時候會出現類爆炸.使用裝飾者模式,使用組合的形式構造對象,比使用繼承更加靈活簡單,也更加容易管理.php

實現

此處實現爲咖啡添加配料.有咖啡材料,現調製摩卡咖啡等.使用Beverage抽象類,咖啡和配料分別繼承Beverage類,並實現裏面的抽象方法Cost和GetDecription.配料的構造方法傳入咖啡類,經過在配料的構造函數裏組合配料與咖啡原料實現裝飾者模式.每一個配料(裝飾者)都有(包裝)一個組件,在裝飾者裏保存一個原料的引用就能實現咖啡被配料包(裝飾)起來.git

總結與分析

裝飾者模式採用組合的構建方式,大大減小了類的數量,也打破了擴展功能必定要使用繼承的思惟慣性.可是裝飾者模式會產生過多的小類,過分地使用會讓程序變得更復雜.github

代碼實現:

裝飾者模式(php/go)函數

相關文章
相關標籤/搜索