PHP设计模式-职责链模式

PHP设计模式-职责链模式

职责链模式也叫责任链模式。职责连模式的英文翻译是 Chain Of Responsibility Design Pattern。在 GoF 的《设计模式》中,它是这么定义的: > Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles...

PHP 2020-07-07 PM 15℃ 0条
PHP设计模式-策略模式

PHP设计模式-策略模式

**策略模式**,英文全称是 Strategy Design Pattern。在 GoF 的《设计模式》一书中,它是这样定义的: > Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it. 翻译成中文就是:定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客户端(这里的客户端代...

PHP 2020-07-03 PM 26℃ 0条
PHP设计模式-模板方法模式

PHP设计模式-模板方法模式

**模板方法(Template Method)模式**,英文是 Template Method Design Pattern。在 GoF 的《设计模式》一书中,它是这么定义的: > Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure. ...

PHP 2020-07-02 PM 29℃ 0条
PHP设计模式-观察者模式

PHP设计模式-观察者模式

我们常把 23 种经典的设计模式分为三类:创建型、结构型、行为型。前面的文章我们已经讲了了创建型和结构型,我们知道,创建型设计模式主要解决“对象的创建”问题,结构型设计模式主要解决“类或对象的组合或组装”问题,从这篇文章开始,我们开始学习行为型设计模式。行为型设计模式主要解决的就是“类或对象之间的交互”问题。行为型设计模式比较多,有 11 个,几乎占了 23 种经典设计模式的一半。它们分别是:观察者模式、模板模式、策略模式、职责链模式、状态模式、迭代器模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式。 这篇文章我们开始学习第一个行为型设计模式,也是在实际的开发中用得比较多的...

PHP 2020-06-29 PM 71℃ 3条
PHP设计模式-亨元模式

PHP设计模式-亨元模式

前面我们已经讲了结构型设计模式中的,代理模式、桥接模式、装饰器模式、适配器模式、门面模式以及组合模式。今天我们来讲结构型设计模式的最后一个模式-**亨元(Flyweight)模式**。 享元模式的定义为:采用一个共享类来避免大量拥有相同内容的“小类”的开销。这种开销中最常见、直观的影响就是增加了内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象,减少其带来的开销。享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象。 ### 亨元模式的结构与实现 #### 结构 ![](https://www.yangpanyao.com/usr/uploads/2020/...

PHP 2020-06-28 PM 41℃ 0条
PHP设计模式-组合模式

PHP设计模式-组合模式

**组合(Composite)模式**跟我们之前讲的面向对象设计中的“组合关系(通过组合来组装两个类)”,完全是两码事。这里讲的“组合模式”,主要是用来处理树形结构数据。这里的“数据”,你可以简单理解为一组对象集合。正因为其应用场景的特殊性,数据必须能表示成树形结构,这也导致了这种模式在实际的项目开发中并不那么常用。但是,一旦数据满足树形结构,应用这种模式就能发挥很大的作用,能让代码变得非常简洁。 组合模式在 GoF 的《设计模式》一书中,是这样定义的: > Compose objects into tree structure to represent part-whole h...

PHP 2020-06-26 PM 42℃ 0条
PHP设计模式-门面模式

PHP设计模式-门面模式

### 门面模式 **门面Facade)模式**,也叫外观模式,英文全称是 Facade Design Pattern。在 GoF 的《设计模式》一书中,门面模式是这样定义的: > Provide a unified interface to a set of interfaces in a subsystem. Facade Pattern defines a higher-level interface that makes the subsystem easier to use. 翻译成中文就是:门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。 ##...

PHP 2020-06-24 PM 45℃ 0条
PHP设计模式-适配器模式

PHP设计模式-适配器模式

适配器(Adapter)模式的英文翻译是 Adapter Design Pattern。顾名思义,这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。对于这个模式,有一个经常被拿来解释它的例子,就是 USB 转接头充当适配器,把两种不兼容的接口,通过转接变得可以一起工作。 适配器模式有两种实现方式:类适配器和对象适配器。其中,类适配器使用继承关系来实现,对象适配器使用组合关系来实现。 ### 适配器模式的结构 **类适配器** ![](https://www.yangpanyao.com/usr/uploads/2...

PHP 2020-06-23 PM 55℃ 0条
PHP设计模式-装饰器模式

PHP设计模式-装饰器模式

### 装饰器(Decorator)模式 **装饰器模式**是结构型设计模式的一种,也叫包装器(Wrappe)模式。装饰器模式的定义为动态的给对象添加一些额外的职责。简单的说,如果你想在不改变现有功能的情况下,增加新的功能,这个时候我们就可以使用装饰器模式。 ### 装饰器模式的结构 ![](https://www.yangpanyao.com/usr/uploads/2020/06/274400011.png) 1. 抽象构件角色(Component):定义一个抽象接口,以规范准备接收附加责任的对象。 2. 具体构件角色(Concrete Component):这是被装饰者,...

PHP 2020-06-19 PM 53℃ 0条
PHP设计模式-桥接模式

PHP设计模式-桥接模式

**桥接(Bridge)模式**,也叫作桥梁模式,英文是 Bridge Design Pattern。也是结构型设计模式之一。在 GoF 的《设计模式》一书中,桥接模式是这么定义的:“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就是:“将抽象和实现解耦,让它们可以独立变化。”关于桥接模式,另外一种理解是:“如果一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。”通过组合关系来替代继承关系,避免继承层...

PHP 2020-06-17 PM 60℃ 0条