
设计模式
文章平均质量分 75
偷懒的加菲
Laravel8.x和Laravel8.5中文文档翻译参与者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
我和王争学设计模式|桥接模式
定义原创 2021-09-12 14:10:08 · 189 阅读 · 0 评论 -
我和王争学设计模式|代理模式
定义 方法一(继承式) 方法二(接口式) 方法三 (动态代理) 其他参考: [1]. 极客时间《设计模式》(王争) [2].《研磨设计模式》(陈臣、王斌) [3]. 《Learning PHP设计模式》 [4]. 从零使用composer初始化PSR-4项目 ...原创 2021-09-11 21:37:14 · 239 阅读 · 0 评论 -
我和王争学设计模式|抽象工厂
目录定义标准框架产品抽象和实现工厂抽象和实现调用工厂制造产品运行结果课程中示例改写参考 极客时间《设计模式》(王争) 定义 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体类 一系列相关:意思就是生成的产品都差不多,可以理解为同一接口的实现 相互依赖对象的接口:A依赖B,给他们一起打包创建出来 new A(new B()); 无需指定具体类:不会根据传入参数创建产品 标准框架 GitHub Gitee 产品抽象和实现 <?php namespace App; interf原创 2021-09-11 21:23:23 · 172 阅读 · 0 评论 -
我和王争学设计模式|原型模式
极客时间《设计模式》(王争) 定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 应用场景 对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式,来创建新对象,以达到节省创建时间的目的。 PHP有clone关键字,可以使用clone关键字直接对实例进行拷贝 我的理解原型设计模式就是 内存拷贝,然后修改个别属性值,以复制+修改的方式降低new 对象所带来的系统消耗 class Resource .原创 2021-09-09 21:20:35 · 322 阅读 · 0 评论 -
我和王争学设计模式|建造者模式
我们可以把校验逻辑放置到 Builder 类中,先创建建造者,并且通过 set() 方法设置建造者的变量值,然后在使用 build() 方法真正创建对象之前, 做集中的校验,校验通过之后才会创建对象。除此之外,我们把 ResourcePoolConfig 的构造函数改为 private 私有权限。 这样我们就只能通过建造者来创建 ResourcePoolConfig 类对象。并且,ResourcePoolConfig 没有提供任何 set() 方法,这样我们创建出来的对象就是不可变对象了。 如果构造函数参数原创 2021-09-09 19:56:51 · 147 阅读 · 0 评论 -
我和王争学设计模式|工厂方法
目录定义缺点代码示例消除分支语句 极客时间《设计模式》(王争) Github Gitee 定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到子类。 缺点 类的数量会随着扩展爆炸性增长,如果增加一个类,要同时增加工厂类(Factory)和产品类(Product) 并没有完全消除“else-if”语句,如果要消除就利用多态。 代码示例 列出部分代码,完整代码在上方链接中。 <?php namespace App; interface I原创 2021-09-09 18:28:42 · 184 阅读 · 0 评论 -
我和王铮学设计模式|简单工厂
相对于直接 new 来创建对象,用工厂模式来创建究竟有什么好处呢? 如果我们使用简单工厂模式来实现,就只能选择第一种包含 if 分支逻辑的实现方式。如果我们还想避免烦人的 if-else 分支逻辑,这个时候,我们就推荐使用工厂方法模式。 当创建逻辑比较复杂,是一个“大工程”的时候,我们就考虑使用工厂模式,封装对象的创建过程,将对象的创建和使用相分离。何为创建逻辑比较复杂呢?我总结了下面两种情况。 第一种情况:类似规则配置解析的例子,代码中存在 if-else 分支判断,动态地根据不同的类型创建不同的对象。针原创 2021-09-08 21:58:21 · 238 阅读 · 0 评论 -
我和王争学设计模式 |单例模式
去除程序对全局变量以来,单例模式是的存储的数据全局可用 为什么要使用单例? 例存在哪些问题? 单例与静态类的区别? 有何替代的解决方案? 现代的PHP是一门非常适合用来学习设计模式的脚本语言,为什么这样说,因为像Java一样支持抽象类、接口类,支持了这两个属性,就可以更方便的学习设计模式了 1 处理资源访问冲突、解决资源竞争,例如写日志功能,如果new出多个实例,同时写入一个文件,就可能造成文件中内容的覆盖 2 表示全局唯一,某些数据在系统中只能保存一份,比如配置信息类、唯一ID发号器 尽管介绍如何实现一个原创 2021-09-01 22:39:03 · 304 阅读 · 0 评论