设计模式
zdatbit
这个作者很懒,什么都没留下…
展开
-
策略模式
策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。 策略模式就是用来封装算法的,但是在实践中,我们可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。...原创 2018-02-28 15:53:57 · 131 阅读 · 0 评论 -
设计模式的原则
面向对象的四个好处:可维护、可扩展、可复用和灵活性好。单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。简单理解就是做好一件事。开放封闭原则:是说软件实体应该可以扩展,但是不可修改。对于扩展是开放的,对于更改是封闭的。依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象,简单理解就是要针对接口编程,不要对实现编程。迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作...原创 2018-02-28 16:28:12 · 103 阅读 · 0 评论 -
备忘录模式
备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。简单理解就是将当前状态留存并可恢复,很容易理解的一个模式。Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。Me...原创 2018-03-02 14:00:22 · 149 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作原创 2018-03-02 11:32:40 · 116 阅读 · 0 评论 -
状态模式
状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。即是将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和转换。...原创 2018-03-02 10:56:43 · 118 阅读 · 0 评论 -
抽象工厂
抽象工厂的好处很明显,易于交换产品系列,由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。它让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。缺点是增加功能时,需要改动很多地方,感觉不符合封闭-开放原则。优化的方法是用简单工...原创 2018-03-02 10:25:39 · 128 阅读 · 0 评论 -
观察者模式
使用观察者模式的动机是什么呢?将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。 观察者模式所做的工作其实就是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。...原创 2018-03-01 14:50:38 · 125 阅读 · 0 评论 -
建造者模式
以炒菜为例,用建造者模式炒出来的菜就不会少放盐。 它主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。...原创 2018-03-01 14:10:38 · 165 阅读 · 0 评论 -
外观模式
外观模式很容易理解,即将复杂的系统接口信息隐藏,对各个系统的接口整合对外提供一个单一的接口,很常用但不一定知道是这个模式。原创 2018-03-01 11:25:09 · 108 阅读 · 0 评论 -
模板方法
模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。原创 2018-03-01 11:00:08 · 115 阅读 · 0 评论 -
工厂方法
可以跟简单工厂对比着来看原创 2018-03-01 10:20:45 · 105 阅读 · 0 评论 -
简单工厂模式
大话设计模式,以一个计算器的设计为例有一定的缺点:这个模式只是解决对象的创建问题,而且由于工厂本身包括了所有的具体处理方式,导致每次维护或扩展都要改动这个工厂,以至于代码需要重新编译部署,这真的是一个糟糕的处理方式。...原创 2018-02-28 14:45:07 · 116 阅读 · 0 评论 -
代理模式
以追姑娘为例 代理模式,为其他对象提供一种代理以控制对这个对象的访问。原创 2018-03-01 09:40:39 · 114 阅读 · 0 评论 -
装饰模式
大话设计模式,以穿衣为例 Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在的。至于ConcreteDecorator...原创 2018-02-28 17:31:25 · 136 阅读 · 0 评论 -
桥接模式
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。抽象与它的实现分离,并不是说让抽象类与其派生类分离,指的是抽象类和它的派生类用来实现自己的对象。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。...原创 2018-03-02 16:52:03 · 152 阅读 · 0 评论