国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例

2024-05-04 23:34:59
字體:
供稿:網(wǎng)友

這篇文章主要介紹了PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例,裝飾者模式就是不修改原類代碼和繼承的情況下動態(tài)擴(kuò)展類的功能,本文就給出了代碼實(shí)例,需要的朋友可以參考下

定義:

裝飾者模式就是不修改原類代碼和繼承的情況下動態(tài)擴(kuò)展類的功能。傳統(tǒng)的編程模式都是子類繼承父類實(shí)現(xiàn)方法重載,使用裝飾器模式,只需添加一個(gè)新的裝飾器對象,更加靈活,避免類數(shù)量和層次過多。

角色:

Component(被裝飾對象基類)

ConcreteComponent(具體被裝飾對象)

Decorator(裝飾者基類)

ContreteDecorator(具體的裝飾者類)

示例代碼:

 

  1. //被裝飾者基類 
  2. interface Component 
  3. public function operation(); 
  4.  
  5. //裝飾者基類 
  6. abstract class Decorator implements Component 
  7. protected $component
  8.  
  9. public function __construct(Component $component
  10. $this->component = $component
  11.  
  12. public function operation() 
  13. $this->component->operation(); 
  14.  
  15. //具體裝飾者類 
  16. class ConcreteComponent implements Component 
  17. public function operation() 
  18. echo 'do operation'.PHP_EOL; 
  19.  
  20. //具體裝飾類A 
  21. class ConcreteDecoratorA extends Decorator { 
  22. public function __construct(Component $component) { 
  23. parent::__construct($component); 
  24.  
  25.  
  26. public function operation() { 
  27. parent::operation(); 
  28. $this->addedOperationA(); // 新增加的操作 
  29.  
  30. public function addedOperationA() { 
  31. echo 'Add Operation A '.PHP_EOL; 
  32.  
  33. //具體裝飾類B 
  34. class ConcreteDecoratorB extends Decorator { 
  35. public function __construct(Component $component) { 
  36. parent::__construct($component); 
  37.  
  38.  
  39. public function operation() { 
  40. parent::operation(); 
  41. $this->addedOperationB(); 
  42.  
  43. public function addedOperationB() { 
  44. echo 'Add Operation B '.PHP_EOL; 
  45.  
  46.  
  47. class Client { 
  48.  
  49. public static function main() { 
  50. /* 
  51. do operation 
  52. Add Operation A 
  53. */ 
  54. $decoratorA = new ConcreteDecoratorA(new ConcreteComponent()); 
  55. $decoratorA->operation(); 
  56.  
  57.  
  58. /* 
  59. do operation 
  60. Add Operation A  
  61. Add Operation B  
  62. */ 
  63. $decoratorB = new ConcreteDecoratorB($decoratorA); 
  64. $decoratorB->operation(); 
  65.  
  66.  
  67. Client::main(); 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹江口市| 忻城县| 芦山县| 奉贤区| 云安县| 方城县| 汉寿县| 襄樊市| 通州区| 北流市| 延吉市| 和田市| 湟源县| 舞钢市| 寿阳县| 五家渠市| 聂荣县| 平罗县| 綦江县| 宣武区| 成都市| 崇礼县| 黑山县| 新龙县| 偏关县| 肃宁县| 天水市| 喀喇| 苏尼特右旗| 双峰县| 县级市| 进贤县| 定南县| 彭泽县| 麦盖提县| 宜阳县| 右玉县| 昌都县| 澄江县| 巴彦县| 屯门区|