11 2022 档案
摘要:简介: 备忘录模式,属于行为型的设计模式。 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 备忘录模式顾名思义,就是存档功能,类似Git工具,每次提交都相当于一次备份。 主要有一下角色构成 Memento —— 负责存储 Or
阅读全文
摘要:简介: 模板方法模式,是行为型的设计模式。 定义一个操作中的算法的骨架,而将一些步骤延迟到子类当中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 通俗讲,模板方法模式是偏向继承的设计模式,当子类有重复的动作时候,可将他们提取出来,放在父类进行处理。 适用场景: 算法结构相同但是
阅读全文
摘要:简介: 原型模式,属于创建型模式的一种。 主要针对对象进行克隆,把被克隆的对象称之为原型,原型模式称之为克隆模式也许更为贴切。 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用场景: 实例化对象的资源开销过大时可直接克隆。 需要循环创建大量对象,此时用克隆也是一个挺不错的选择。
阅读全文
摘要:简介: 迭代器模式,是行为型的设计模式。 提供一中方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 适用场景: 除了学习,在PHP中几乎没有应用场景。 优点: 学习意义远大于实际意义。 缺点: 实际开发中几乎用不上,完全可以被更简单的foreach,或者是所用框架内置的遍历方案
阅读全文
摘要:简介: 命令模式,又称之为动作模式或者事务模式,属于行为型的设计模式。 将不同的请求封装成不同的请求对象,以便使用不同的请求; 角色都会用饭馆来举例子: 命令下达者:顾客 命令接受者:服务员 命令本身: 菜单 命令执行者:厨师 适用场景: Laravel的事件调度机制有用到了命令模式。 想要解耦服务
阅读全文
摘要:简介: 代理模式,是结构型的设计模式。用于为其它对象提供一种代理以控制对这个对象的访问。 目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象,并且可以在不改变目标对象的情况下添加一些额外的功能。 适用场景: 调用端不想或不能直接调用的对象。 服务端不想让调用端看到核心实现。 优点: 服务
阅读全文
摘要:简介: 门面模式又称之为外观模式,属于结构型的设计模式。 用于为子系统中的一组接口提供一致的调用方案。门面模式定义了一个高层接口,引入门面角色之后,只需要直接与门面角色交互,降低了系统的耦合度。 适用场景: 最经典的Laravel的Facade,当使用一些库的时候,不需要了解底层系统如何实现,只需要
阅读全文
摘要:简介: 注册树模式,属于结构型的设计模式。一种很简单的设计模式 适用场景: 类似IOC。写一个庞大的类库的时候,为了方便各种资源的归纳,可以统一放到一棵树上。 优点: 把一个个游兵散将一样的对象进行统一管理。 另外可以根据项目的业务场景自定义层级。 缺点: 增加项目的复杂性。 纯粹的注册树写法,缺少
阅读全文
摘要:简介: 桥接模式又叫桥梁模式,属于结构型模式。目的是将抽象与实现分离,使它们都可以独立的变化,解耦。继承有很多好处,但是会增加耦合,而桥接模式偏向组合和聚合的方式来共享。 适用场景: 不希望或不适用使用多继承的场景。 一个类存在2个或更多的 独立变化维度 , 并且这些维度都需要 独立扩展 优点: 解
阅读全文
摘要:简介: 适配器模式属于结构型设计模式。 将一个类的接口转换成可应用的兼容接口。适配器使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式有两种实现方案,一种是继承的方式,一种是组合的方式。 适用场景: 兼容不方便更改的“祖传”代码。 归纳具有相似点的模块,比如Laravel File
阅读全文
摘要:简介 装饰器模式又叫做装饰者模式,属于结构型的设计模式。 指的是在不改变原类文件和使用继承的情况下动态扩展这个对象的功能,从而修饰源数据。 组成: 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。 具体构件(ConcreteComponent)角色:实现抽象构件,通
阅读全文