結構型模式 裝飾者設計模式

2021-09-26 02:27:35 字數 980 閱讀 7382

裝飾模式指的是在不必改變原類檔案和繼承的情況下,動態地擴充套件乙個物件的功能。

它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件,比如處理流。

應用場景:需要擴充套件乙個類的功能,或給乙個類新增附加職責。

優點就是耦合性低,重用性高(高內聚,低耦合)。

按照一般的方法,要麼就是分別修改各自的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 接下來...