![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PHP设计模式
firesea
这个作者很懒,什么都没留下…
展开
-
PHP-设计模式详解(命令模式)
命令模式(Command Pattern)介绍将请求封装成一个对象,从而用不同的请求对客户进行参数化。何时使用:对行为进行各种连续处理,对行为请求和实现进行解耦,将一组行为抽象为对象,实现二者之间的松耦合。优点:降低系统耦合,容易扩展缺点:可能会导致某些系统有过多的具体命令类。代码实现:<?phpclass CommandChain { private $_commands = array(); public function addCommand($cmd) {原创 2021-07-19 09:46:25 · 80 阅读 · 0 评论 -
PHP-设计模式详解(责任链模式)
责任链模式(Chain of Responsibility Pattern)介绍为请求创建了一个接收者对象的链,并沿这条链传递该请求,直到有对象处理它为止。何时使用:被调用者对调用者的请求分情况动态进行处理的情况下使用。优点:调用端不需要了解被调用端内部处理逻辑缺点:可能会造成循环调用代码实现:<?phpabstract class Handler{ private $next_handler ; private $lever = 0;原创 2021-07-16 09:02:20 · 130 阅读 · 0 评论 -
PHP-设计模式详解(代理模式)
代理模式(Proxy Pattern)介绍给某一个对象提供一个代理,并由代理对象控制对原对象的引用。何时使用:需要访问的对象不能直接访问,在该对象的外面加一层代理层,来控制对该对象的访问。优点:代理层的加入,协调调用者和被调用者,降低系统的耦合性; 调用端只和代理层进行交互,隐藏被调用段信息,加强安全性。缺点:在原对象层面添加了代理层,可能造成访问速度变慢。<?phpinterface Subject{ function say(); functio原创 2021-07-16 09:01:02 · 104 阅读 · 0 评论 -
PHP-设计模式详解(享元模式)
介绍运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。何时使用:系统中存在大量消耗大量内存的对象,并且这些对象可以按照某种特性简单的进行分组的。优点:减少对象的创建数量,降低内存消耗。缺点:提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。代码实现:<?phpinterface Flyweight{原创 2021-07-15 10:11:18 · 84 阅读 · 0 评论 -
PHP-设计模式详解(外观模式)
介绍为子系统的一组接口提供一个一致的对外接口,隐藏系统的复杂性。何时使用:定义系统的入口优点:减少系统依赖; 提高灵活性和安全性。缺点:不符合开闭原则,修改比较麻烦。代码实现:<?phpclass Run{ function sportRun(){ echo 'run<br>'; }}class Walk{ function sportWalk(){原创 2021-07-15 10:10:05 · 73 阅读 · 0 评论 -
PHP-设计模式详解(装饰器模式)
装饰器模式(Decorator)介绍结构型模式,为现有对象添加新的功能(装饰),比子类方式更加灵活。何时使用:在不想增加很多子类的情况下扩展类。主类中新增加的内容只是在某些特殊的情况下才会执行,优点:改变原有代码的情况下对原有代码中的内容进行扩展,开放封闭原则; 每个装饰器完成自己的功能,单一职责。缺点:多层装饰比较复杂。代码实现:<?phpinterface MessageTemplate{ function message();}cla原创 2021-07-13 07:59:26 · 218 阅读 · 0 评论 -
PHP-设计模式详解(组合模式)
组合模式(Composite)介绍结构型模式,把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。何时使用:提现整体和部分层次结构,忽略组合对象和单个对象的不同,可以统一使用组合结构中的所有对象。优点:模块调用简单; 节点自由度增加。缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。代码实现:<?phpabstract class CompanyBase{ protec原创 2021-07-13 07:58:07 · 152 阅读 · 0 评论 -
PHP-设计模式详解(桥接模式)
桥接模式(Bridge)介绍结构型模式,用来解耦抽象化与实现化,使二者可以独立变化。何时使用:多角度分类,每个角度都可能变化。优点:抽象和实现分离; 扩展能力强;缺点:需要对系统进行抽象,设计难度较高。注:桥接模式和适配器模式非常相似,但是,适配器模式是让两个不相关的类进行组合,让其协同工作,实现中间的转换。而桥接模式是让抽象层和具体实现层解耦,方便单独进行改变。代码实现<?phpinterface MessageTemplate{ func原创 2021-07-09 09:40:02 · 186 阅读 · 0 评论 -
PHP-设计模式详解(适配器模式)
适配器模式(Adapter)介绍结构型模式,提取多个不兼容类的相近方法构建接口,建立适配类实现接口。增减实现类的时候,不用修改调用端与适配器的交互代码,减少了代码间的耦合性。何时使用:现有类和新增的类相关性不大,需要用到部分相关代码的时候。优点:让多个没有关联的类一起运行; 提高类的复用; 增加类的透明度; 灵活定较好。缺点:过度的使用适配器,会让系统非常零乱。代码实现<?phpinterface Animal{ function getName();原创 2021-07-09 09:38:14 · 91 阅读 · 0 评论 -
PHP-设计模式详解(原型模式)
原型模式(Prototype)介绍创建型模式,原型模式有人形象的称其为克隆模式,通过拷贝已存在的对象来创建新的对象。何时使用:当new的对象很大,每次new耗费资源颇多的时候,可以采用原型模式进行创建。优点:A、提高性能;B、逃避构造函数的约束;缺点:对于已有的类进行克隆,需要考虑的代码实现:<?phpclass ChinaMobile{ public $system;}class Phone{ public $service_sy原创 2021-07-08 11:13:13 · 89 阅读 · 0 评论 -
PHP-设计模式详解(建造者模式)
建造者模式(Builder)介绍创建型模式,使用多个简单的对象一步一步构建成一个复杂的对象。何时使用:一些基本部件不会变,而其组合经常变化的时候。建造者模式一般认为有四个角色:A、产品角色,产品角色定义自身的组成属性B、抽象建造者,抽象建造者定义了产品的创建过程以及如何返回一个产品C、具体建造者,具体建造者实现了抽象建造者创建产品过程的方法,给产品的具体属性进行赋值定义D、指挥者,指挥者负责与调用客户端交互,决定创建什么样的产品优点:A、建造者独立,易扩展。B、便原创 2021-07-08 11:11:22 · 336 阅读 · 0 评论 -
PHP-设计模式详解(单例模式)
单例模式(Singleton)介绍创建型模式,保证一个类仅有一个实例,并提供一个它的全局访问点。何时使用:控制实例数量,节省系统资源的时候使用。优点:在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。缺点:没有接口,不能继承,与单一职责原则冲突。代码实现:<?phpclass Singleton{ private static $obj = null; private function __construct(){ } pub原创 2021-07-08 11:04:56 · 114 阅读 · 0 评论 -
PHP-设计模式详解(抽象工厂模式)
抽象工厂模式(Abstract Factory)介绍创建型模式,提供一个创建一系列相关或者相互依赖对象的接口,无需指定具体的类,将对象的创建抽象成一个接口。何时使用:系统中存在多个产品族,系统只消费其中的每一个产品族。优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。缺点:产品族扩展非常困难,要增加一个系列的某一产品。代码实现<?phpinterface people { function jiehun();}class原创 2021-07-08 10:56:20 · 76 阅读 · 0 评论 -
PHP-设计模式详解(工厂模式)
工厂模式(Factory)介绍:创建型模式,定义一个工厂类,在实例化类的时候,由调用类决定实例化哪个类,使其创建过程延迟到调用类进行。何时使用:不同条件下创建不同的实例。优点:调用者只需要知道对象的名称就可以创建对象; 扩展性高,新增一个产品,只要扩展一个工厂类即可; 屏蔽具体实现,调用者只关心接口。缺点:新增产品需要增加一个实现类和修改工厂类,增加系统的复杂度。代码实现:<?phpinterface Animal{function call();}原创 2021-07-08 10:50:04 · 109 阅读 · 0 评论 -
PHP-设计模式的六大原则
1、单一职责原则(Single Responsibility Principle,简称SRP ) 有且只有一个原因可引起类的变更。完成单一职责,用职责来衡量类设计是否优良。2、里氏替换原则(Liskov Substitution Principle,简称LSP) 子类可完美替换基类,只要父类可以出现的地方,子类就可以出现,反之父类未必可以替换子类。增强程序的健壮性,即使增加了子类,原有子类还可以继续运行。子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接...原创 2021-07-08 10:46:25 · 276 阅读 · 0 评论 -
PHP-设计模式类型
1、创建型模式:该类型模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)2、结构型模式:该类型模式关注类和对象的组合。继承的概念被用来组合接口和原创 2021-07-08 10:43:48 · 98 阅读 · 0 评论