裝飾模式指的是在不必改變原類檔案和繼承的情況下,動態地擴充套件乙個物件的功能。
它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件,比如處理流。
應用場景:需要擴充套件乙個類的功能,或給乙個類新增附加職責。
優點就是耦合性低,重用性高(高內聚,低耦合)。
按照一般的方法,要麼就是分別修改各自的read方法,要麼就是再寫3個子類去繼承重寫read,但繼承本身就是高耦合的方式,會將父類有用沒用的方法都繼承過來,從而使程式臃腫。
這裡最好的處理辦法就是在類內建立父類物件,然後呼叫其某乙個方法,保證高內聚,同時低耦合,也就是裝飾者模式。
//readfile抽象類
public
abstract
class
fileread
//讀取文字檔案類
public
class
filetextread
extends
fileread
}//讀取**檔案類
public
class
filemusicread
extends
fileread
}public
class
filevedioread
extends
fileread
}/**
* 緩衝類,同樣繼承readfile類,但是裡面建立了父類物件,可以傳入其三個子類物件
* 實現了三個子類各自功能的同時還增加了緩衝機制
*/public
class
bufferdfileread
extends
fileread
@override
void
read()
}//測試類
public
class
test
}
這種模式,重點在於其設計結構。 設計模式 結構型模式 裝飾者模式
方 案1 解決星巴克咖啡訂單問題分析 1 drink 是乙個抽象類,表示飲料 2 des就是對咖啡的描述,比如咖啡的名字 3 cost 方法就是計算費用,drink 類中做成乙個抽象方法.4 decaf 就是單品咖啡,繼承drink,並實現cost 5 espress milk 就是單品咖啡 調料,...
結構型模式 裝飾者模式
動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator模式相比生成子類更為靈活。1.在不影響其他物件的情況下,以動態 透明的方式給單個物件新增職責。2.處理那些可以撤消的職責。3.當不能採用生成子類的方法進行擴充時。1.component 定義乙個物件介面,可以給這些物件動態地新增職...
結構型模式 裝飾者模式
總結解決乙個問題 裝飾者模式 program ade someproblem author cade franklin create 2019 12 28 28 19 public abstract class drink string getdesc abstract float cost 接下來...