PHP設計模式之裝飾者模式

2021-06-22 17:04:35 字數 863 閱讀 7213

裝飾者模式動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。

<?php

abstract class beverage

// 被裝飾者類

class coffee extends beverage

public function cost()

}// 以下三個類是裝飾者相關類

class condimentdecorator extends beverage

public function cost() }

class milk extends condimentdecoratorelse

exit('failure');

} public function cost() }

class sugar extends condimentdecoratorelse

}public function cost()}

// test case

//1.拿杯咖啡

$coffee = new coffee();

//2.加點牛奶

$coffee = new milk($coffee);

//3.加點糖

$coffee = new sugar($coffee);

printf("coffee total:%0.2f元\n",$coffee->cost());

總結

1.裝飾者(milk)和被裝飾者(coffee)必須是一樣的型別。目的是裝飾者必須取代被裝飾者。

2.新增行為:當裝飾者和元件組合時,就是在加入新的行為。

PHP設計模式之裝飾者模式

php設計模式之裝飾者模式 介紹 裝飾者模式動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。思維導圖 有這樣乙個專案,做乙個餐廳訂餐系統。起初的 結構是這樣的。前面有很多beverage的繼承類,現在遇到的問題是牛奶的價錢 了,那麼所有相關的類,我們都要進行調整,比...

php設計模式之 裝飾者模式

beverage.php namespace designpattern abstract class beverage param string name return beverage public function setname string name beverage return flo...

設計模式之 裝飾者模式

一 裝飾者模式 裝飾者模式又稱為包裝模式。動態地給乙個物件增加新的職責。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者模式顧名思義就是對乙個物件進行裝飾,具體怎樣裝飾呢?那就是給這個物件不斷的增加職責方法。給乙個物件增加方法不簡單啊,用繼承或者直接在物件的類中增加方法。如果我們要對自...