2、UML图
3、PHP代码示例
我们可以利用继续或者组合的办法来扩展一个类的功能,这种办法随着子类的增多以及子类的子类的涌现,导致系统繁芜,代码混乱,而装饰者模式采取继续和引用的办法,减少继续,动态增加类的功能,是一种常用的设计模式。

装饰着模式提高代码的复用性,不必重写已有功能,应对快速和眇小的需求变革,不影响其他代码的运行,只是在代码流中添加一个或者多个\"大众装饰\"大众目标工具的装饰器。
装饰器模式的优点是比较灵巧的处理需求变革,避免在基类中添加太多的功能。但是,这种模式对开拓者来说提高了难度:调试排错会增加难度。
装饰器模式有以下的角色:
抽象构件(Component)角色:定义接口,用于吸收类新增的功能。
详细构件(Concrete Component)角色:没有装饰过的裸类。
装饰(Decorator)角色:抽象装饰器,用于将详细装饰器调度。
详细装饰(Concrete Decorator)角色:增长装饰浸染。
官方的解释,我们举个例子,大口语阐明一下:
假设我们有一个手机(详细构件),它只能通电话利用。产品经理哀求你在原手机的根本上增加发短信功能(详细装饰器),你开拓一个发短信的模块,插到原手机上(装饰器),于是现在手机有了发短信功能,卖出的那五个手机通话功能还有,如果要升级购买发短信模块即可。这时候,产品经理又哀求增加拍照的功能,做法和增加发短信模块一样。这样所有的手机不用重新制造,都可以利用,只是功能不同。这便是装饰器模式。
二、UML图图来源于网上,借用一下。
三、PHP代码示例
代码来源于网上,做了写修正。
装饰器模式代码1
装饰器模式代码2
装饰器模式代码3
运行结果:
手机通话
发短信
手机通话
发短信
拍照
不对之处请各位示正。喜好就关注我吧。