摘要:装饰者模式是在开放关闭原则下实现动态添加或减少功能提高程序的扩展性详细介绍注本文可以作为学习装饰者模式的基础篇但是我个人更建议配套装饰者模式来学习效果更佳本文中的例子是由框架关键技术解析中摘抄的。
装饰者模式:
是在开放-关闭原则下实现动态添加或减少功能,提高程序的扩展性.
详细介绍
注:
本文可以作为学习"装饰者模式"的基础篇,但是我个人更建议配套Decorator Pattern With Laravel 装饰者模式来学习效果更佳.
本文中的例子是由《laravel 框架关键技术解析》中摘抄的。有兴趣的朋友可以自行购买(这本书不能说写的多棒,但是作者写的很用心,laravel关键部分源码讲的很细,学习源码很有帮助)
name = $name; } public function display(){ echo "我是".$this->name."我出门了!!!"."
"; } } class Finery implements Decorater{ private $component; public function __construct(Decorater $component){ $this->component = $component; } public function display(){ $this->component->display(); } } class Shoes extends Finery{ public function display(){ echo "穿上鞋子"."
"; parent::display(); } } class Skirt extends Finery{ public function display(){ echo "穿上裙子"."
"; parent::display(); } } class Fire extends Finery{ public function display(){ echo "出门前先整理头发"."
"; parent::display(); echo "出门后再整理一下头发"."
"; } } $xiaofang = new XiaoFang("小芳"); $shoes = new Shoes($xiaofang); $skirt = new Skirt($shoes); $fire = new Fire($skirt); $fire->display();
运行下看看结果,理解起来会更佳,执行流程不复杂就不赘述了:
出门前先整理头发
穿上裙子
穿上鞋子
我是小芳我出门了!!!
出门后再整理一下头发
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22672.html
摘要:装饰对象包含一个真实对象的引用装饰对象接受所有来自客户端的请求。装饰对象可以在转发这些请求以前或以后增加一些附加功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。 Decorator Pattern 装饰者模式 纲要: 1. 一个初学者的疑惑 2. 装饰者模式的特点 3. 简单case掌握装饰者模式 4. laravel中装饰者模式的应用 Con...
摘要:源码解析这个类的源码主要就是文件的操作和文件属性的操作,而具体的操作是通过每一个实现的,看其构造函数看以上代码知道对于操作,实际上是通过的实例来实现的。可以看下的使用上文已经说了,使得对各种的操作变得更方便了,不管是还是得。 说明:本文主要学习下LeagueFlysystem这个Filesystem Abstract Layer,学习下这个package的设计思想和编码技巧,把自己的一...
摘要:判断是否存在构造函数,不存在直接实例化,存在则通过来获取输入函数,并有相应的方法解决依赖参数问题,实现依赖注入。 Laravel 框架关键技术解析·读书笔记(一) 第一章 入口文件 请求访问的入口文件,主要完成几部分工作,分别是: 自动加载函数的添加 服务器实例化与服务注册 路由加载 请求实例化与路由分发 相应生成与发送 其中,自动加载函数用于包含引用文件,改文件是composer...
摘要:以下这些项目,你拿来学习学习练练手。当你每个步骤都能做到很优秀的时候,你应该考虑如何组合这四个步骤,使你的爬虫达到效率最高,也就是所谓的爬虫策略问题,爬虫策略学习不是一朝一夕的事情,建议多看看一些比较优秀的爬虫的设计方案,比如说。 (一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量、数据结构、语法...
摘要:中用到了很多设计模式,实现这些设计模式时也用到了不少新特性。学会之后可以把设计模式的思想应用在我们的程序中。实际上是服务容器中那些底层类的静态代理,相比于传统的静态方法,在提供了简洁且丰富的语法同时,还带来了更好的可测试性和扩展性。 laravel中用到了很多设计模式,实现这些设计模式时也用到了不少php新特性。学习这些设计模式,可以帮助我们: 学习php新特性,知道如何用新特性,写...
阅读 2395·2021-11-11 16:54
阅读 1204·2021-09-22 15:23
阅读 3643·2021-09-07 09:59
阅读 1989·2021-09-02 15:41
阅读 3282·2021-08-17 10:13
阅读 3036·2019-08-30 15:53
阅读 1234·2019-08-30 13:57
阅读 1209·2019-08-29 15:16