PHP 設計模式 七 裝飾器模式

2021-09-28 20:24:49 字數 1410 閱讀 9698

什麼是裝飾器模式

裝飾器模式(decorator pattern): 允許向乙個已有的物件新增新的功能或部分內容,同時又不改變其結構。屬於結構型模式,它是作為現有的類的乙個包裝。

這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。

為什麼需要裝飾器模式

我們要對乙個已有的物件新增新功能,又不想修改它原來的結構。

使用子類繼承的方法去實現新增新功能,會不可避免地出現子類過多,繼承鏈很長的情況。而且不少書籍都規勸我們竭力保持乙個物件的父與子關係不超過3個。

裝飾器模式,可以提供對物件內容快速非侵入式地修改。

裝飾器模式使用組合和委託,而不是使用繼承來解決擴充套件問題。

php **實現

<?php

/** * 功能介面

* inte***ce decorator

*/inte***ce decorator

/** * 裝飾器1

* class decorator1

*/class decorator1 implements decorator

public function afterdo()

}/**

* 裝飾器2

* class decorator2

*/class decorator2 implements decorator

public function afterdo()

}/**

* 被裝飾的物件

* class user

*/class user

/*** 新增裝飾器

* @param decorator $decorator

*/public function adddecorate(decorator $decorator)

/*** 遍歷裝飾器,呼叫裝飾器方法

*/public function beforedo()

}/**

* 遍歷裝飾器,呼叫裝飾器方法

*/public function afterdo()

}}//********************===裝飾器模式測試******************************=

//例項化被裝飾物件

$user = new user();

//新增裝飾器

$user->adddecorate(new decorator1());

$user->adddecorate(new decorator2());

//呼叫方法

$user->eat();

//結果

//先去洗手

//洗完手然後擦一下

//開始吃飯

//吃飽了,繼續寫**

//**上線,保佑無bug

PHP設計模式 裝飾器模式

web開發筆記 www.chhua.com 每日練習 php設計模式 裝飾器模式 裝飾器模式與介面卡模式的作用幾乎是一樣的,要深刻的理解裝飾模式,就一定要記住 裝飾 二字,很明顯,就是在之前類的基礎上進行一下修飾。也就是說,裝飾器模式必須有父類,然後子類對父類進行裝飾。下面用乙個例項來說明一下裝飾器...

PHP 設計模式 裝飾器模式

裝飾器類的作用 不使用繼承,也能是物件使用新方法。重點是類例項化出來的物件。裝飾器類 配菜類 也必須繼承food類,否則就不是裝飾器類了 嗯!就是這樣 裝飾器 手抓餅實現。1 food抽象類 cake類 2 food抽象類 peicai抽象類 各種配菜類 有新方法 3 例項化cake類 obj 將 ...

設計模式(七)裝飾模式

裝飾模式介紹 裝飾模式是結構型設計模式之一,不必改變類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能,是繼承的替代方案之一。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。定義動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。裝飾模式結構圖 裝飾模式在現實生...