设计模式
深夜程序猿
everything in front of you is the best arrangement
展开
-
结构型模式(外观模式)
外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。介绍意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更...转载 2019-05-08 10:18:19 · 88 阅读 · 0 评论 -
结构型模式(装饰器模式)
装饰器模式,又名包装(Wrapper)模式,该模式向一个已有的对象添加新的功能,而不改变其结构。通常给对象添加功能有3中方法:直接修改类,添加相应的功能 派生对应的子类扩展新功能 使用对象组合的方式直接修改类代码是一种侵入式修改,很容易对类功能造成损害。使用继承方式扩展功能,则在整个子类中添加功能,即使有的对象不需要,new出来也会有这些新功能。装饰器模式是典型的基于对象组合...转载 2019-05-07 10:57:56 · 101 阅读 · 0 评论 -
结构型模式(组合模式)
组合模式将对象组合成树形结构,以表示‘部分-整体’的层次结构。在组合模式,客户端访问独立对象和组合对象(或称对象集合)一样。独立对象是一个有特定功能的对象,它不引用其他任何其他对象。组合对象则是一个提供相似功能对象的集合,主要用来管理独立对象,并为客户端提供和独立对象一样的访问方式。接下来,我们就以目录和文件来举例,利用它们的一个相同的功能“查看大小”来举例。1 问题...转载 2019-05-07 10:56:45 · 361 阅读 · 0 评论 -
结构型模式(适配器模式)
适配器模式,即根据客户端需要,将某个类的接口转换成特定样式的接口,以解决类之间的兼容问题。如果我们的代码依赖一些外部的API,或者依赖一些可能会经常更改的类,那么应该考虑用适配器模式。下面我们以集成支付宝支付功能为例。1 问题假设支付宝支付类的功能如下:/** * 支付宝支付类 */class Alipay{ public function sendPayme...转载 2019-05-07 10:55:05 · 204 阅读 · 0 评论 -
创建型模式(单例模式)
单例模式,正如其名,允许我们创建一个而且只能创建一个对象的类。这在整个系统的协同工作中非常有用,特别明确了只需一个类对象的时候。那么,为什么要实现这么奇怪的类,只实例化一次?在很多场景下会用到,如:配置类、Session类、Database类、Cache类、File类等等。这些只需要实例化一次,就可以在应用全局中使用。本文我们以数据库类为例。1 问题如果没有使用单例模式...转载 2019-05-07 10:52:58 · 268 阅读 · 0 评论 -
创建型模式(抽象工厂模式)
抽象工厂模式(Abstract Factory)目录抽象工厂模式(Abstract Factory) 模式动机 模式定义 模式结构 时序图 代码分析 模式分析 实例 优点 缺点 适用环境 模式应用 模式扩展 “开闭原则”的倾斜性 工厂模式的退化 总结 3.1. 模式动机 在工厂方法模式中具体工厂负责生产具体的产品...转载 2019-05-07 10:49:42 · 189 阅读 · 0 评论 -
创建型模式(工厂模式)
工厂方法模式(Factory Method Pattern)目录工厂方法模式(Factory Method Pattern) 模式动机 模式定义 模式结构 时序图 代码分析 模式分析 实例 工厂方法模式的优点 工厂方法模式的缺点 适用环境 模式应用 模式扩展 总结 2.1. 模式动机现在对该系统进行修改,不再设计一个按钮工厂类来...转载 2019-05-07 10:47:34 · 117 阅读 · 0 评论 -
创建型模式(简单工厂模式)
1. 简单工厂模式( Simple Factory Pattern )目录简单工厂模式( Simple Factory Pattern ) 模式动机 模式定义 模式结构 时序图 代码分析 模式分析 实例 简单工厂模式的优点 简单工厂模式的缺点 适用环境 模式应用 总结 1.1. 模式动机考虑一个简单的软件应用场景,一个软件系统可以提供...转载 2019-05-07 10:44:09 · 125 阅读 · 0 评论 -
基础(UML类图,设计原则)
序言:面向对象是PHP5之后增加的功能,是PHP走向现代语言的一个标志。在过程式设计时代,PHP以学习成本低、入门快的特点赢得很多WEB开发者的青睐,但同时也限制了PHP的发展。借鉴Java和C++之后的PHP语言,在增加面向对象特性的同时,还保持着简便易懂的特点。但是,如果只是使用了PHP的继承特性,并不是面向对象的设计,因为这并不能提高代码的重用性和灵活性。不论是 P...转载 2019-05-07 10:38:27 · 1889 阅读 · 0 评论 -
五种常见的 PHP 设计模式(IBM)
设计模式一书将设计模式引入软件社区,该书的作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides Design(俗称 “四人帮”)。所介绍的设计模式背后的核心概念非常简单。经过多年的软件开发实践,Gamma 等人发现了某些具有固定设计的模式,就像建筑师设计房子和建筑物一样,可以为浴室的位置或厨房的构造方式开发模板。使用这些模板或者说...转载 2019-05-14 09:39:03 · 201 阅读 · 0 评论 -
五种常见的 PHP 设计模式
设计模式一书将设计模式引入软件社区,该书的作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides Design(俗称 “四人帮”)。所介绍的设计模式背后的核心概念非常简单。经过多年的软件开发实践,Gamma 等人发现了某些具有固定设计的模式,就像建筑师设计房子和建筑物一样,可以为浴室的位置或厨房的构造方式开发模板。使用这些模板或者说...转载 2019-05-08 10:55:10 · 199 阅读 · 0 评论 -
设计模式超简单的解释!
设计模式超简单的解释!(本项目从design-patterns-for-humansfork)介绍设计模式是反复出现问题的解决方案;如何解决某些问题的指导方针。它们不是可以插入应用程序并等待神奇发生的类,包或库。相反,这些是如何在某些情况下解决某些问题的指导原则。设计模式是反复出现问题的解决方案; 如何解决某些问题的指导方针维基百科将它们描述为在软件工程中,软件设计...转载 2019-05-08 10:52:49 · 371 阅读 · 0 评论 -
设计模式(45种)
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫...转载 2019-05-08 10:51:38 · 395 阅读 · 0 评论 -
行为模式(观察者模式)
观察者模式,也称发布-订阅模式,定义了一个被观察者和多个观察者的、一对多的对象关系。在被观察者状态发生变化的时候,它的所有观察者都会收到通知,并自动更新。观察者模式通常用在实时事件处理系统、组件间解耦、数据库驱动的消息队列系统,同时也是MVC设计模式中的重要组成部分。以下我们以订单创建为例。当订单创建后,系统会发送邮件和短信,并保存日志记录。1 问题在没有用观察者模式的时候...转载 2019-05-08 10:26:14 · 324 阅读 · 0 评论 -
行为模式(策略模式)
策略模式定义了一族相同类型的算法,算法之间独立封装,并且可以互换代替。这些算法是同一类型问题的多种处理方式,他们具体行为有差别。每一个算法、或说每一种处理方式称为一个策略。在应用中,就可以根据环境的不同,选择不同的策略来处理问题。以数组输出为例。数组的输出有序列化输出、JSON字符串输出和数组格式输出等方式。每种输出方式都可以独立封装起来,作为一个策略。应用时,如...转载 2019-05-08 10:25:18 · 1293 阅读 · 0 评论 -
行为模式(解释器模式)
迭代器模式迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。介绍意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时使用:遍历一个聚合对象。如何解决:把...转载 2019-05-08 10:24:25 · 134 阅读 · 0 评论 -
行为模式(命令模式)
命令模式命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。介绍意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场...转载 2019-05-08 10:23:08 · 520 阅读 · 0 评论 -
结构型模式(代理模式)
代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。介绍意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操...转载 2019-05-07 10:59:09 · 243 阅读 · 0 评论