设计模式
mUncleWang
大道至简,悟在天成。
展开
-
工厂模式
工厂方法模式 作为一种创建型设计模式,工厂方法就是要创建“某种东西”。对于工厂模式,要创建的东西和创建它的工厂类之间不存在绑定。为了保持松耦合,客户一般会通过一个工厂发出请求,工厂去创建所需求的产品。应用场景:如果实例化的对象的子类可能变化,就要使用工厂方法模式。每个子类相当于工厂的一条生产线,Client需要什么样的产品,就找工厂下对应产品的订单,工厂安排不同的生产线去生产...原创 2018-07-08 11:21:17 · 185 阅读 · 0 评论 -
观察者模式
### 观察者模式当一个对象状态发生改变时,依赖他的对象全部会收到通知,并自动更新。场景:当一个事件发生后,要执行一连串更新操作。传统操作是在事件发生后的代码中直接处理逻辑。当新的逻辑增加时,代码变的难以维护。这种方式是耦合的,侵入式修改的。增加逻辑需要修改事件主体的代码。观察着实现了低耦合,非侵入式的通知和更新机制。UML类图图 9-1 观察者模式适用场景...原创 2018-07-21 11:14:55 · 182 阅读 · 0 评论 -
策略模式
策略模式一般来说,使用设计模式时,首先考虑“什么会导致重新设计”?然后要避免那些导致重新设计的因素。 设计模式的主要原则之一是封装变化的内容。大部分情况下,对于不同类别的请求,需要有不同的算法来实现。这时候策略模式就派上用场了。UML类图图 8-1 策略模式 关于策略和状态设计模式 类图上来看,策略模式和状态模式的参与者非常相似,场景的参与者都与一个接口有聚合关...原创 2018-07-21 11:12:20 · 160 阅读 · 0 评论 -
代理模式
代理模式是一种结构型设计模式。参与者主要有两个,即代理对象和真实对象。远程代理 代理对象在一个地址空间,而实际对象在另一个地址空间,此时代理就是远程的。除了使用远程代理做防火墙,远程代理还可以用于在线游戏平台。虚拟代理 虚拟代理可以缓存一个真实主题的有关信息,从而能延迟对这个真实主体的访问。有时候在真实对象处理登录数据之前,高安全性登录会使用一个虚拟代理来完成登录。保护代理 保护代...原创 2018-07-21 11:04:04 · 167 阅读 · 0 评论 -
装饰器模式
装饰器模式 作为一种结构型设计模式,装饰器模式是对一个已有结构增加“装饰”。对于适配器模式,为现有的结构增加的是一个适配器类,用来处理不兼容的接口。装饰器模式回想现有的对象增加对象。装饰器也称为包装器,Decorator参与者用具体组件包装Component参与者。使用场景一般来说,如果你想为现有对象增加新功能而不影响其他对象,就可以使用装饰器模式。一般来说主要适用于特殊需求...原创 2018-07-15 16:02:22 · 165 阅读 · 0 评论 -
状态设计模式
状态(state)设计模式是一种针对状态改变的有用的模式。游戏通常使用状态模式,因为游戏中的对象会频繁改变状态。状态模式的作用就是允许对象在状态改变时改变其行为。UML类图 图 6-1 状态模式类图使用场景游戏和模拟器经常使用状态模式来处理不同的状态。当目标对象状态需要频繁更新的时候适合使用状态设计模式。比如各种棋盘类游戏等。状态机是一个模型,其重点包括不同的状态、一个状...原创 2018-07-19 07:12:30 · 238 阅读 · 0 评论 -
适配器模式
适配器模式 设计模式有个重要的格言:组合优先于继承。一般来说组合要优先于继承,因为参与者之间的绑定更加宽松,在重用、结构和修改等方面有很多优点,这点与继承不同,继承具体类或者所继承的类中包含已经实现的方法时,存在一种紧密绑定的缺点。适用场景适配器在电气领域非常常见,两项转三项插座,usb转换头等等。适配器就是为了解决兼容问题出现的,你不必重新开发一套专用的功能。而是只要简单改...原创 2018-07-12 08:49:44 · 103 阅读 · 0 评论 -
关于设计模式那些事儿
关于设计模式那些事儿在开始学习设计模式基础之前,你需要具备的一些基础知识,如OOP思想、PHP开发经验和UML基础,这些有助于你快速理解和掌握设计模式。如果说之前的OOP,PHP开发技巧学的是一招一式的话,设计模式更像是一本武功秘籍,可以让你把之前学会的一招一式融会贯通,发挥更大的威力。开始之前,一起来看几个问题:为什么要采用面向对象编程? 这个问题几乎是面试必问的问题,是个...原创 2018-07-10 23:24:03 · 220 阅读 · 0 评论 -
模板方法模式
模板方法模式首先来说下反向控制结构(好莱坞原则),好莱坞原则指父类调用子类的操作,而子类不调用父类的操作,仅仅是实现具体方法。(比如面试完毕之后,面试官告诉你,先回去吧,有消息我们会通知你,不要给我打电话问,我们会给你电话的),模板方法是好莱坞原则的最佳实践之一。模板方法定义操作中算法的“骨架”,具体方法由子类实现。UML类图 图 5-1 模板方法类图使用场景如果已经...原创 2018-07-17 08:34:35 · 146 阅读 · 0 评论 -
原型设计模式
原型设计模式 原型设计模式主要使用克隆技术,复制原型实例来创建新对象。这里Client类是原型设计模式中不可缺少的一部分。客户通过Prototype接口创建一个具体原型的实例,Prototype接口中包含一个克隆方法。应用场景如果一个项目需要你创建某个远行对象的多个实例,就可以使用原型模式。例如克隆一个士兵,来增加同种兵种的数量。UML类图图 2 原型设计模式...原创 2018-07-10 08:43:08 · 181 阅读 · 0 评论 -
面向对象设计五大原则
下面来阐述”面向对象设计五大原则”和良性依赖原则在应付变化方面的作用。单一职责原则(Single-Resposibility Principle)。”对一个类而言,应该仅有一个引起它变化的原因。”本原则是我们非常熟悉地”高内聚性原则”的引申,但是通过将”职责”极具创意地定义为”变化的原因”,使得本原则极具操作性,尽显大师风范。同时,本原则还揭示了内聚性和耦合生,基本途径就是提高内聚性;如果一个类承担转载 2017-01-05 14:28:06 · 461 阅读 · 0 评论