博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 装饰者模式
阅读量:4519 次
发布时间:2019-06-08

本文共 1759 字,大约阅读时间需要 5 分钟。

decoratedShape = $decoratedShape; } //类似递归 public function draw() { $this->decoratedShape->draw(); }}//step 4 创建拓展ShapeDecorator类的实体装饰类class RedShapeDecortor extends ShapeDecorator{ function __construct(Shape $decoratedShape) { $this->decoratedShape = $decoratedShape; } public function draw() { parent::draw();// throw new Exception("Exception End : Border Color: Red\n"); printf("Border Color: Red\n"); }}class GreenShapeDecortor extends ShapeDecorator{ function __construct(Shape $decoratedShape) { $this->decoratedShape = $decoratedShape; } public function draw() { parent::draw(); throw new Exception("Exception End : Border Color: Green\n"); printf("Border Color: Green\n"); }}class BlueShapeDecortor extends ShapeDecorator{ function __construct(Shape $decoratedShape) { $this->decoratedShape = $decoratedShape; } public function draw() { parent::draw(); printf("Border Color: Blue\n"); }}function main(){ //画圈圈// $circle = new Circle();//// //画圈圈初始化,搭配颜色装饰画红色,接着再装饰一个绿色。// $shapeDecortor = new RedShapeDecortor($circle);// $shapeDecortor = new GreenShapeDecortor($shapeDecortor);// $shapeDecortor->draw(); //优点,类内部可使用异常中断。 //画矩形 $rectangle = new Rectangle(); //画矩初始化,搭配颜色装饰画红色,接着再装饰一个绿色。 $shapeDecortor = new RedShapeDecortor($rectangle); $shapeDecortor = new GreenShapeDecortor($shapeDecortor); $shapeDecortor = new BlueShapeDecortor($shapeDecortor); try { $shapeDecortor->draw(); } catch (Exception $e) { printf($e->getMessage() . "\n"); } //todo 拓展:可再配合工厂模式,生产装饰器。}main();

输出结果:

 

转载于:https://www.cnblogs.com/lionzheng/p/9890627.html

你可能感兴趣的文章
SpringMVC关于Date类型的时间根据格式显示页面上
查看>>
sql 将查询结果为多行一列合并为一行一列
查看>>
Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
查看>>
poj 1704 阶梯博弈
查看>>
Sharepoint 2013 开启App和配置App
查看>>
2018ICPC区域赛总结
查看>>
解决Sublime There are no packages available for installation问题
查看>>
nginx反向代理 强制https请求 + 非root用户起80,443端口
查看>>
软件工程网络15个人阅读作业1(201521123049 杨泽斌)
查看>>
java 删除多层文件夹
查看>>
css中字符换行的一些问题
查看>>
oracle查询优化之子查询条件优化
查看>>
函数声明和函数表达式
查看>>
Python代码的编译
查看>>
【链表】反转
查看>>
在IIS7.5中ASP.NET调用cmd程序拒绝访问决绝方法小记
查看>>
(转载)VS2010/MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)
查看>>
第五张标准I/O库
查看>>
SpringMVC源码阅读:属性编辑器、数据绑定
查看>>
ios iPhone的一些基础知识,扫盲
查看>>