裝飾者模式簡單示例 一

2021-09-10 03:39:04 字數 1701 閱讀 1255

**例項參考於《headfirst設計模式》。

public

abstract

class

beverage

// cost必須在子類中實現

public

abstract

double

cost()

;}

public

abstract

class

condimentdecorator

extends

beverage

// 濃縮咖啡

public

class

espresso

extends

beverage

@override

public

double

cost()

}// 綜合咖啡

public

class

houseblend

extends

beverage

@override

public

double

cost()

}// 深焙

public

class

darkroast

extends

beverage

@override

public

double

cost()

}

// 摩卡

public

class

mocha

extends

condimentdecorator

@override

public string getdescription()

@override

public

double

cost()

}// 豆漿

public

class

soyextends

condimentdecorator

@override

public string getdescription()

@override

public

double

cost()

}// 奶泡

public

class

whip

extends

condimentdecorator

@override

public string getdescription()

@override

public

double

cost()

}

public

class

starbuzzcoffee

}

我們這邊是利用繼承達到「型別」匹配的目的,而不是利用繼承獲得行為。

行為來自裝飾者和基礎元件,或與其他裝飾者之間的組合關係。

裝飾者該做的事,就是增加行為到被包裝的物件上。

繼承鏈如下圖:

簡單的裝飾者模式

裝飾者模式主要用來擴充套件功能的,不會改變原來物件的功能,只做擴充套件 版本一 如下 public abstract class beefnoodlepublic class basebeefnoodle extends beefnoodle public int getprice public c...

裝飾者模式簡單理解

裝飾者模式簡單理解 1.定義 增強乙個類的功能,還可以讓裝飾者類之間互相裝飾 2.步驟 1 裝飾者類中需要維護乙個被裝飾者類的引用 2 讓裝飾者類有乙個共同的父類,或者父介面 eq 例項 裝飾者類與繼承的區別 繼承實現的增強類 優點 結構清晰,而且實現簡單 缺點 對於每乙個的需要增強的類都要建立具體...

裝飾者模式應用示例 表單驗證

在乙個 web 專案中,可能存在非常多的表單,如註冊 登入 修改使用者資訊等。在表單資料提交給後台之前,常常要做一些校驗,比如登入的時候需要驗證使用者名稱和密碼是否為空,如下 表單驗證title name viewport content width device width,initial sca...