一、問題星巴克咖啡訂單專案
1、咖啡種類/單品咖啡:espresso(義大利濃咖啡)、shortblack、longblack(美式咖啡)、decaf(無因咖啡)
2、調料:milk、soy(豆漿)、chocolate
3、要求在擴充套件新的咖啡種類時,具有良好的擴充套件性、改動方便、維護方便
4、使用oo的來計算不同種類咖啡的費用:客戶可以點單品咖啡,也可以單品咖啡+調料組合
二、普通解決方案
1、drink是乙個抽象類,表示飲料
2、des就是對咖啡的描述,比如咖啡的名字
3、cost()方法就是計算費用,drink類中做成乙個抽象方法
4、decaf就是單品咖啡,繼承drink,並實現cost
5、espress && milk 就是單品咖啡+調料,這個組合很多
6、問題:這樣設計,會有很多類,當我們增加乙個單品咖啡,或者乙個新的調料,類的數量就會倍增,就會出現類**
三、裝飾著模式定義
1:動態的將功能附加到物件上。在物件功能擴充套件方面,它比繼承更有彈性,裝飾者模式也體現了開閉原則(opc)
設計模式學習筆記二十五 門面模式
門面 facade 模式也叫外觀模式,屬於物件結構型模式。它主要用來將子系統的一系列呼叫封裝成高層次的介面。參加接觸的第乙個模式就是這個模式,第一次從大牛嘴裡聽說這個模式,雲裡霧裡,高深莫測。幾年後回首,默默微笑,無語。當覺得自己有點厲害了,今天卻發現依然很菜,永遠有不會的東西。1.子系統介面 pu...
訪問者模式 java設計模式(二十五)
訪問者模式 visitor pattern 表示乙個用於作用於某物件結構中的各個元素的操作。讓使用者在不改變各元素的類的前提下定義作用於這些元素的新操作。訪問者結構。訪問者模式有兩個層次結構 訪問者的層次 元素層次。不同具體元素通過接收不同的具體訪問者,以自身為引數,執行訪問者中操作不同元素的方法,...
Python零基礎學習筆記(二十五) 裝飾器
概念 是乙個閉包,把乙個函式當作引數返回乙個替代版的函式 本質上是乙個返回函式的函式 簡單的裝飾器 def func1 print my name is jjking.def func2 print func1 func2 def func3 func def inner print func re...