
PHP设计模式
文章平均质量分 59
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案,本人根据自己的开发经验结合众多设计模式整理出PHP中的设计模式实现方案,可以帮助你更好的了解PHP中设计模式的代码实现。
码农兴哥
纸上得来终觉浅,绝知此事要躬行。
展开
-
PHP设计模式之桥接模式
桥接模式的定义是 “将抽象和实现解耦,让它们可以独立变化”。一个类存在两个(或多个)独立变化的维度,通过组合的方式可以让这两个(或多个)维度可以独立进行扩展。简单地说,桥接模式主要是处理二维模型的问题。这种组合式的问题常规方法需要A*B种组合,而桥接模式只需要A+B种组合,维度越多,桥接模式越有优势。因此,实际开发中如果需要表示二维(或者更多维度)模型,并且每个维度的内容越多,就可以使用桥接模式。但是如果维度很少,或者每个维度的内容不多,则可以选择使用传统的模式。原创 2023-04-25 18:56:19 · 173 阅读 · 0 评论 -
PHP设计模式之适配器模式
适配器模式的英文翻译是 Adapter Design Pattern。顾名思义,这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。对于这个模式,有一个经常被拿来解释它的例子,就是 USB 转接头充当适配器,把两种不兼容的接口,通过转接变得可以一起工作。适配器模式有两种实现方式:类适配器和对象适配器。其中,类适配器使用继承关系来实现,对象适配器使用组合关系来实现。原创 2023-04-25 17:04:11 · 326 阅读 · 0 评论 -
PHP设计模式之装饰器模式
装饰器顾名思义,就是在原有内容上“增添装饰品”,就像装修房子一样,先刷墙,再贴瓷砖,再安装柜子...装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承。它主要的作用是给原始类添加增强功能,这也是判断是否该用装饰器模式的一个重要的依据。除此之外,装饰器模式还有一个特点,那就是可以对原始类嵌套使用多个装饰器。为了满足这个应用场景,在设计的时候,装饰器类需要跟原始类继承相同的抽象类或者接口。装饰器类和原始类继承同样的父类,这样我们可以对原始类“嵌套”多个装饰器类。原创 2023-04-25 15:16:56 · 270 阅读 · 0 评论 -
PHP设计模式之策略模式
策略模式:定义一组算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客户端。策略模式解耦的是策略的定义、创建、使用这三部分。使用策略模式可以避免冗长的if-else/switch分支判断代码。原创 2023-04-25 14:17:48 · 406 阅读 · 0 评论 -
PHP设计模式之责任链模式
责任链模式常用在框架开发中,用来实现框架的过滤器、拦截器功能,让框架的使用者在不需要修改框架源码的情况下,添加新的过滤拦截功能。责任链模式的英文翻译是 Chain Of Responsibility Design Pattern(也叫做 职责链模式),意思是将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。下面通过PHP的源代码演示责任链模式的使用,设定场景是对用户发表的评论内容进行非法内容校验拦截和关键词过滤替换。责任链模式的应用场景: 过滤器、拦截器。原创 2023-04-25 13:43:37 · 238 阅读 · 0 评论 -
PHP设计模式之观察者模式
观察者模式(Observer Design Pattern) 也被称为 发布订阅模式(Publish-SubscribeDesign Pattern),在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。观察者模式的应用场景非常广泛,小到代码层面的解耦,大到架构层面的系统解耦,再或者一些产品的设计思路,都有这种模式的影子,比如,邮件订阅、RSS Feeds,本质上都是观察者模式。有进程内的实现方式,也有跨进程的实现方式。原创 2023-04-24 23:20:59 · 249 阅读 · 0 评论 -
PHP设计模式之单例模式
单例设计模式(Singleton Design Pattern)的意思是:一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例模式。单例模式可以保证类的对象全局唯一。 “一个类只允许创建唯一一个对象”,那对象的唯一性的作用范围是什么呢? 是指线程内只允许创建一个对象,还是指进程内只允许创建一个对象? 答案是后者,也就是说,单例模式创建的对象是进程唯一的。原创 2023-04-24 22:29:17 · 713 阅读 · 0 评论 -
PHP设计模式之工厂模式
上面的代码中定义了一个SimpleFactory的简单工厂类,在里面通过条件判断传进来的参数分别实例化不同的类。但是如果再增加一个memcache客户端,就需要再次修改服务端SimpleFactory的代码。中,使用接口实现了一个写入缓存的demo,但是客户端还是知道了服务器的所有类;现在想把服务器的类的实现对客户端隐藏,可以使用简单工厂。. 因此需要使用工厂方法。对于修改封闭,对于扩展开放。原创 2023-04-24 20:16:13 · 167 阅读 · 0 评论 -
PHP中接口的理解
接口设计的初衷是,将接口和实现相分离,封装不稳定的实现,暴露稳定的接口。上游系统面向接口而非实现编程,不依赖不稳定的实现细节,这样当实现发生变化的时候,上游系统的代码基本上不需要做改动,以此来降低代码间的耦合性,提高代码的扩展性。从这个设计初衷上来看,如果在业务场景中,某个功能只有一种实现方式,未来也不可能被其他实现方式替换,那就没有必要为其设计接口,也没有必要基于接口编程,直接使用实现类就可以了。原创 2023-04-24 19:31:49 · 169 阅读 · 0 评论 -
PHP中多态的理解
面向对象编程语言的四大特性: 封装、抽象、继承、多态。设计模式的精髓是对多态的使用。原创 2023-04-24 19:25:02 · 251 阅读 · 0 评论