小松聊PHP进阶
-
浅谈PHP设计模式的策略模式
简介: 策略模式又叫做政策模式,用于如何组织和调用算法的,是属于行为型模式的一种。策略模式需要三个角色构成: Context 封装角色:也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。 Strategy 抽象策略角色:通常为接口,指定规则。 ConcreteStrategy 具体策略角色:实现抽象策略中的操作,该…
-
浅谈PHP设计模式的装饰器模式
简介 装饰器模式又叫做装饰者模式,属于结构型的设计模式。指的是在不改变原类文件和使用继承的情况下动态扩展这个对象的功能,从而修饰源数据。组成:抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。抽象装饰(Decorator)角色:继承…
-
浅谈PHP设计模式的适配器模式
简介: 适配器模式属于结构型设计模式。将一个类的接口转换成可应用的兼容接口。适配器使原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式有两种实现方案,一种是继承的方式,一种是组合的方式。 适用场景: 兼容不方便更改的“祖传”代码。 归纳具有相似点的模块,比如Laravel FileSystemAdapter。 优点: 扩展了原有类,增强了扩展性…
-
浅谈PHP设计模式的桥接模式
简介: 桥接模式又叫桥梁模式,属于结构型模式。目的是将抽象与实现分离,使它们都可以独立的变化,解耦。继承有很多好处,但是会增加耦合,而桥接模式偏向组合和聚合的方式来共享。 适用场景: 不希望或不适用使用多继承的场景。一个类存在2个或更多的 独立变化维度 , 并且这些维度都需要 独立扩展 优点: 解耦抽象和具体实现,方便增加抽象和实现。优秀的扩充能力符合开闭原…
-
浅谈PHP设计模式的注册树模式
简介: 注册树模式,属于结构型的设计模式。一种很简单的设计模式 适用场景: 类似IOC。写一个庞大的类库的时候,为了方便各种资源的归纳,可以统一放到一棵树上。 优点: 把一个个游兵散将一样的对象进行统一管理。 另外可以根据项目的业务场景自定义层级。 缺点: 增加项目的复杂性。 纯粹的注册树写法,缺少单例模式的有点,可能存在重复创建对象的可能,需要做额外的验证…
-
浅谈PHP设计模式的门面模式
简介: 门面模式又称之为外观模式,属于结构型的设计模式。用于为子系统中的一组接口提供一致的调用方案。门面模式定义了一个高层接口,引入门面角色之后,只需要直接与门面角色交互,降低了系统的耦合度。 适用场景: 最经典的Laravel的Facade,当使用一些库的时候,不需要了解底层系统如何实现,只需要知道如何使用门面调用即可。 为一些复杂的子系统提供一个简单对外…
-
浅谈PHP设计模式的代理模式
简介: 代理模式,是结构型的设计模式。用于为其它对象提供一种代理以控制对这个对象的访问。目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象,并且可以在不改变目标对象的情况下添加一些额外的功能。 适用场景: 调用端不想或不能直接调用的对象。 服务端不想让调用端看到核心实现。 优点: 服务端与调用端分离,防止服务端代码与调用端直接关联,降低耦合。 保…
-
浅谈PHP设计模式的命令模式
简介: 命令模式,又称之为动作模式或者事务模式,属于行为型的设计模式。将不同的请求封装成不同的请求对象,以便使用不同的请求;角色都会用饭馆来举例子:命令下达者:顾客命令接受者:服务员命令本身: 菜单命令执行者:厨师 适用场景: Laravel的事件调度机制有用到了命令模式。 想要解耦服务端和调用端的时候。 优点: 当去修改命令的时候,直接与命令接受者进行通信…
-
浅谈PHP设计模式的迭代器模式
简介: 迭代器模式,是行为型的设计模式。提供一中方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 适用场景: 除了学习,在PHP中几乎没有应用场景。 优点: 学习意义远大于实际意义。 缺点: 实际开发中几乎用不上,完全可以被更简单的foreach,或者是所用框架内置的遍历方案替代。 代码: //声明一个迭代器类,并实现内置的迭代器接口 …
-
浅谈PHP设计模式的原型模式
简介: 原型模式,属于创建型模式的一种。主要针对对象进行克隆,把被克隆的对象称之为原型,原型模式称之为克隆模式也许更为贴切。用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用场景: 实例化对象的资源开销过大时可直接克隆。 需要循环创建大量对象,此时用克隆也是一个挺不错的选择。 优点: 高性能:如果创建对象的过程复杂,或者消耗大量资源,那么…