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