国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 会同县| 呼和浩特市| 东平县| 安康市| 荥阳市| 格尔木市| 麻江县| 略阳县| 公主岭市| 正蓝旗| 临江市| 肇庆市| 青田县| 宜阳县| 墨玉县| 漠河县| 庄河市| 蓝山县| 屏边| 博白县| 嘉义县| 文登市| 宁德市| 集安市| 高尔夫| 芦山县| 柞水县| 荃湾区| 崇文区| 自贡市| 南漳县| 湘潭县| 平江县| 五华县| 汉沽区| 石景山区| 万载县| 宝丰县| 保靖县| 鄂托克前旗| 罗江县|