博客专栏  >  架构   >  设计模式实战

设计模式实战

主要记录自己学习设计模式时的思考

关注
0 已关注
24篇博文
  • 设计模式系列:桥梁模式

    一.名称二.问题(为了解决什么问题)一个对象有多个维度的变化,需要将这些维度抽离出来,让其独立变化设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,...

    2016-02-29 15:53
    613
  • 设计模式系列:享元模式

    一.名称二.问题(为了解决什么问题)系统中存在大量相似的对象 需要缓冲池的场景三.解决方案(主要体现在uml和核心代码上) 享元模式是池技术的重要实现方式,定义:使用共享对象可有效的支持大量的细...

    2016-02-29 15:53
    482
  • 设计模式系列:解释器模式

    一.名称二.问题(为了解决什么问题)在以下情况下可以使用解释器模式:有一个简单的语法规则,比如一个sql语句,如果我们需要根据sql语句进行rm转换,就可以使用解释器模式来对语句进行解释。 一些重复...

    2016-02-29 15:52
    361
  • 设计模式系列:状态模式

    一.名称二.问题(为了解决什么问题)  在以下情况下可以使用状态模式:• 对象的行为依赖于它的状态(属性)并且可以根据它的状态改变而改变它的相关行为。 • 代码中包含大量与对象状态有关的条件语句,这...

    2016-02-29 15:51
    370
  • 设计模式系列:访问者模式

    一.名称二.问题(为了解决什么问题)三.解决方案(主要体现在uml和核心代码上)访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,...

    2016-02-29 15:48
    326
  • 设计模式系列:备忘录模式

    一.场景保存和恢复状态或操作时,可以使用这个模式,例如游戏中的保存点。二.定义及体现了什么设计原则定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在改对象之外保存这个状态,这样以后就可将对象恢...

    2016-02-29 15:48
    361
  • 设计模式系列:门面模式

    引入大家有没有比较过自己泡茶喝去茶馆喝茶的区别呢?自己泡茶需要自行准备茶叶、茶具和开水,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什么样的茶(铁观音、碧螺春等等)。正因为茶馆有服务员,顾客无...

    2016-02-29 15:48
    339
  • 设计模式系列:观察者模式

    一.名称二.问题(为了解决什么问题)很好辨认,举一些常见的例子: 猫鼠游戏 广播收音机 事件监听等等三.解决方案(主要体现在uml和核心代码上)定义:定义对象间一种一对多的依赖关系,使得每当一个...

    2016-02-29 15:47
    365
  • 设计模式系列:组合模式

    一.名称二.问题(为了解决什么问题)比较好辨别,因为使用范围很窄 当有一个结构可以组合成树形结构,且需要向客户端提供一致的操作接口,使得客户端操作忽略简单元素与复杂元素,如维护和展示部分-整体关系的场...

    2016-02-29 15:47
    453
  • 设计模式系列:迭代器模式

    迭代器模式

    2016-02-29 15:46
    246
  • 设计模式系列:适配器模式

    一.名称二.问题(为了解决什么问题)适配器最好在详细设计阶段不要考虑它,它不是为了解决还处在开发阶段的问题,而是解决正在服役的项目问题,是一个“补救”模式。解决兼容问题。 场景:系统扩展时,需要使用...

    2016-02-29 15:46
    313
  • 设计模式系列:策略模式

    一.引入1.案例计算a+b, a-b2.面向实现编程方案定义一个Calcuate类,里面有两个方法,一个加法,一个减法3.面向设计编程方案把加法和减法封装成两个类二.场景1.应用场景:多个类只有在算法...

    2016-02-29 15:45
    325
  • 设计模式系列:装饰者模式

    一.引入1.案例  比如,三个继承关系:Father,Son,GrandSon三个类,我要在son类上增加一些功能怎么办?2.面向实现编程方案  修改Son,这种方案会有大问题,因为你增强的功能是是修...

    2016-02-28 18:04
    359
  • 设计模式系列:责任链模式

    引入1.案例2.面向实现编程方案首先来看一段代码: public void test(int i, Request request){ if(i==1){ Ha...

    2016-02-28 18:03
    324
  • 设计模式系列:命令模式

    引入1.案例2.面向实现编程方案  如果我们用面向事项的方式来实现的话:会直接让调用者(invoker)和每个接受者(recevier)之间交互,产生耦合.3.面向设计编程方案  命令模式主要的就是在...

    2016-02-28 18:03
    360
  • 设计模式系列:中介者模式

    一.引入1.案例:假设计算机1,2,3,4之间要相互通信。2.面向实现编程方案:类Computer1中要保存类Computer2、类Computer3和类Computer4实例,才能调用Compute...

    2016-02-28 18:02
    490
  • 设计模式系列:原型模式

    一.场景  创建新对象成本较大(如初始化需要占用较长的时间,占用太多的CPU资源或网络资源),新的对象可以通过原型模式对已有对象进行复制来获得,如果是相似对象,则可以对其成员变量稍作修改。二.定义及体...

    2016-02-28 18:02
    275
  • 设计模式系列:代理模式

    一.名称二.问题(为了解决什么问题)我相信第一次接触代理模式的读者肯定非常郁闷,为什么要用代理呢?我们来想想现实世界,打官司为什么要找一个律师?因为你不想参与中间过程的是是非非,只要完成自己的答辩就可...

    2016-02-28 18:01
    332
  • 设计模式系列:建造者模式

    一.场景  需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性。   隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。   通俗示例:在很多游戏软件中,地图...

    2016-02-28 18:01
    416
  • 设计模式系列:模板方法模式

    一.名称二.问题(为了解决什么问题)三.解决方案(主要体现在uml和核心代码上)  定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义改算法的某些特定步骤...

    2016-02-28 18:01
    323
img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部