随笔分类 -  设计模式

摘要:现在的面向对象软件开发过程中,对象便是核心。而对象在不同的情况下会表现出不同的行为,这便是状态。我们也许会用一堆 if-else 判断,或者 switch-case 状态机,但在复杂的状态情况下,状态模式应运而生。 状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 阅读全文
posted @ 2017-06-23 11:32 Adam_Jin
摘要:有一天,你有事想要请个长假,找到项目经理;项目经理说只能批2天的假,他去找部门经理;部门经理只能批5天的假,他去找人事部经理;最终人事部经理决定是否准假。这就是一个链式关系。 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该 阅读全文
posted @ 2017-06-13 09:12 Adam_Jin
摘要:何为命令?就是有人发出,有人执行,有人得到结果。命令发出的人不在乎怎么执行的,只要结果。 命令模式:将一个请求封装成一个对象,使得你用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式,顾名思义来理解即可,就是客户端发布一个命令(也就是“请求”),而这个命 阅读全文
posted @ 2017-06-09 15:08 Adam_Jin
摘要:在实际工作中,有时需要编写很多重复性的代码,这样的代码不易维护更容易出错。在小型项目中,有个模式非常适用此类情况。 模板方法模式:定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。 类图如下: 由此看出,是不是非常简单。类图中只有 阅读全文
posted @ 2017-06-03 17:53 Adam_Jin 阅读(156) 评论(0) 推荐(0)
摘要:所谓“观察”,是为观而察之。就像医院的重症病房,医生不能时时刻刻看着病人,就需要护士或者家属全程看护,一有情况就通知医生。其中,病人是被观察者、护士或家属是观察者。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们 阅读全文
posted @ 2017-05-28 17:01 Adam_Jin 阅读(176) 评论(0) 推荐(0)
摘要:“复制-粘贴”应该是每个程序员最经常干的事情了。那为什么不去一个个敲出来?因为麻烦啊。如果把敲字看做创建对象时构造函数里干的事情,那“复制-粘贴”就能算是原型模式了。 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种 阅读全文
posted @ 2017-05-17 17:46 Adam_Jin 阅读(163) 评论(0) 推荐(0)
摘要:无论是修一段路,或是盖一间房,就算是学习知识都是循序渐进的。先打基础,再做提高,最后成路、成房、成人。如果一上来就铺石子不打路基,直接砌墙不打房基,直接看书而不识字,想必一切都不会好吧。这其中就有了建造者模式的概念了。 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不 阅读全文
posted @ 2017-05-05 17:57 Adam_Jin 阅读(156) 评论(0) 推荐(0)
摘要:工厂方法模式是简单工厂的抽象与扩展,如果单一的产品不能满足设计与需求,是否有其他模式对工厂方法进行再次扩展呢?所以就有了抽象工厂。 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 UML类图如下 从类图可以看出,产品1和产品2是两个抽象产品,为什么要是抽象的呢?因为它们 阅读全文
posted @ 2017-04-30 10:30 Adam_Jin 阅读(154) 评论(0) 推荐(0)
摘要:工厂模式三姐妹中,简单工厂无疑是最简单的。无论多简单的方法,放对了位置便是最佳实现,所以简单工厂在特定情况下还是有应用市场的。 定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定 阅读全文
posted @ 2017-04-20 17:33 Adam_Jin 阅读(303) 评论(0) 推荐(0)
摘要:再简单工厂模式中,如果要添加新的产品,为了配合使用就必须修改工厂类,无疑这就破坏了”开放-闭合“原则。但是这也是简单工厂的优点,简单工厂类包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,取出来客户端对具体产品的依赖。为了解耦合和符合”开放-闭合“原则,工厂模式来了。 定义:定义一个用于 阅读全文
posted @ 2017-04-11 10:08 Adam_Jin 阅读(177) 评论(0) 推荐(0)
摘要:何为单例?哪些类适合做成单例?做成单例的好处又是什么呢?如何实现单例? 概念 何为单例? 定义:单例模式(Singleton)是保证一个类仅有一个实例并提供一个访问它的全局访问点。 定义中就能看到,要保证一个类仅有一个实例化的对象。要如何保证呢?最好的办法就是让它自身负责保存它唯一的实例,而且这个类 阅读全文
posted @ 2017-04-06 16:20 Adam_Jin 阅读(225) 评论(0) 推荐(0)
摘要:上篇说到设计模式的精髓是原则和思想,这篇文章就详细介绍一下设计模式的原则。 一、单一职责原则 定义:就一个类而言,应该仅有一个引起它变化的原因。 人都说,这个原则太普通了,和名字一样简单。不是说大道至简嘛,这个原则在程序设计中所占的份量还是很重的。 一个类涉及的多项功能,如果其中一个功能发生改变需要 阅读全文
posted @ 2017-03-28 10:57 Adam_Jin 阅读(276) 评论(0) 推荐(0)
摘要:最近一直在重温设计模式的知识,或者实际项目中运用的并不多,但设计思想才是最重要的。本系列博文均是自己总结记录之用,仅仅代表个人观点。总结时或用到第三方资料,版权均属原作者所有。若是能帮到正在IT路上前行的同行,那是最好不过了。 关于设计模式,百度百科上的定义是 设计模式(Design Pattern 阅读全文
posted @ 2017-03-24 09:39 Adam_Jin 阅读(319) 评论(0) 推荐(0)