设计模式

2018-03-23 16:26 By "Powerless" 3249 0 1

【一】设计模式概述

    在软件工程中,设计模式(Design Pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。

    设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

    并非所有的软件模式都是设计模式,设计模式特指软件“设计”层次上的问题。还有其它非设计模式的模式,如架构模式。同时,算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

本系列是常见设计模式的集合以及如何在 PHP 中实现这些设计模式,并为每种模式提供了相应的示例代码。

很多人都知道设计模式,但并非都了解如何在具体应用中实现,基于此我们推出了这一系列教程。


【二】常用设计模式大全

    设计模式可以按照结构被分成三种不同的类型:

    1、 创建型

        在软件工程中,创建型设计模式用于处理对象的实例化:

            抽象工厂模式(Abstract Factory)

            建造者模式(Builder)

            工厂方法模式(Factory Method)

            多例模式(Multiton)

            对象池模式(Pool)

            原型模式(Prototype)

            简单工厂模式(Simple Factory)

            单例模式(Singleton)

            静态工厂模式(Static Factory)

    2、结构型

        结构型设计模式用于处理类和对象的组合:

            适配器模式(Adapter)

            桥梁模式(Bridge)

            组合模式(Composite)

            数据映射模式(Data Mapper)

            装饰模式(Decorator)

            依赖注入模式(Dependency Injection)

            门面模式(Facade)

            流接口模式(Fluent Interface)

            代理模式(Proxy)

            注册模式(Registry)

    3、行为型

        行为型设计模式用于处理类的对象间通信:

            责任链模式(Chain Of Responsibilities)

            命令行模式(Command)

            迭代器模式(Iterator)

            中介者模式(Mediator)

            备忘录模式(Memento)

            空对象模式(Null Object)

            观察者模式(Observer)

            规格模式(Specification)

            状态模式(State)

            策略模式(Strategy)

            模板方法模式(Template Method)

            访问者模式(Visitor)

    4、其它

            委托模式(Delegation)

            服务定位器模式(Service Locator)

            资源库模式(Repository)


评 论

View in WeChat

Others Discussion

  • PHP练习-移动数组内的0到最后并保持其他元素顺序不变
    Posted on 2020-08-14 20:32
  • PHP设计模式 - 委托模式
    Posted on 2019-04-25 16:15
  • HTTP头中隐藏PHP版本号
    Posted on 2021-01-11 16:38
  • Composer 异常 [ErrorException]
    Posted on 2019-11-25 17:55
  • PHP8.1 性能基准测试
    Posted on 2022-10-08 17:40
  • 必学十大经典排序算法,看这篇就够了
    Posted on 2019-11-18 16:30
  • Linux工具 - NM目标文件格式分析
    Posted on 2019-04-24 10:29
  • PHP练习-爬楼梯问题
    Posted on 2020-08-14 23:56