模式設計 裝飾 外觀模式

2021-07-13 03:19:06 字數 1466 閱讀 3231

1、裝飾模式包含的4個角色:(1)抽象構件,定義物件的介面;(2)具體構件,定義了具體的構件物件;(3)抽象裝飾類(核心);(4)具體裝飾類,它是抽象裝飾類的子類。

2、裝飾模式適用的範圍:(1)在不影響其它物件的情況下,以動態、透明的方式給單個物件新增職責;(2)需要動態地給乙個物件增加功能,這些功能也能被動態撤銷;(3)當不能採用繼承的方式對系統進行擴充或者採用繼承不利於系統擴充套件和維護時。

3、例項講解:

題目:某圖書管理系統中,書籍類(book)具有借書方法borrowbook()方法和還書方法returnbook()。現在需要動態給該書籍物件新增凍結方法freeze()和遺失方法lose()。使用裝飾模式設計該系統。繪製類圖並程式設計實現。

1、裝飾模式實驗。

(1)通過分析實驗內容,該例項類圖如圖1所示。

圖1 裝飾模式圖書系統例項類圖

(2)建立抽象構件類ibook,其中宣告了borrowbook()和void returnbook()方法,這兩個方法是具體構件類和裝飾器類共有的。**如下:

public inte***ce ibook

(3)建立具體構件類book,該類提供了borrowbook()和void returnbook()方法的實現,它是乙個可以被裝飾的類。**如下:

public class book implements ibook

@override

public void returnbook()

} (4)抽象裝飾類changer。它是所有具體修飾類的父類,同時也是抽象構件的子類。它是裝飾模式的核心。它定義了乙個抽象構件型別的物件ibook,通過建構函式的方式給該物件賦值,同時它通過呼叫ibook中的方法來實現borrowbook()和void returnbook()方法。這樣可以保證原有的方法不會被丟失,而且可以在它的子類中增加新的方法,擴充套件原有的物件的功能。**如下:

public class changer implements ibook

@override

public void borrowbook()

@override

public void returnbook()

} (5)具體裝飾類freezebook。它是changer的子類,繼承了其中的方法,同時新增了freeze()方法,實現書籍的凍結宣告。**如下:

public class freezebook extends changer

public void freeze()

} (6)具體裝飾類losebook。它是changer的子類,繼承了其中的方法,同時新增了lose()方法,實現書籍的遺失宣告。**如下:

public class losebook extends changer

public void lose()

} (7)編寫客戶端測試類client。**如下所示:

public class client

}

設計模式 外觀模式

外觀模式,我的理解就是將複雜的類進行重新封裝,將簡單的介面呈現出來,降低呼叫端和實際類的耦合性。拿 大話設計模式 上邊關於 和 的例子來說。對於不入門的股民來說,交易有些過於龐大,需要學習的東西很多,如果沒整明白就進行投資,很容易賠錢的。很多剛入 的股民都賠的很慘。而買 有提出了乙個新的觀念,我們買...

設計模式 外觀模式

何為外觀模式?外觀模式 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得一子系統更加容易使用。它是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和 各子系統的演化,這種過多的耦合面臨很多變化的挑戰。uml類圖 乙個...

設計模式 外觀模式

外觀模式說白了就是為一組介面提供乙個一致的介面。例如 定義三個類a b c,每個類各定義乙個方法。class a pubic void showa cout a showa pubic void showb cout b showb pubic void showc cout c showc 定義乙...