摘要: 解释器模式(Interpreter Pattern) 1.模式动机 在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。 虽然使用解释器模式的实例不是很多,但对于满 阅读全文
posted @ 2020-11-24 17:17 SSunSShine 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式(Memento Pattern) 1.模式动机 每个人都有犯错误的时候,都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中,客户同样会常常犯错误,能否提供“后悔药”给他们呢?当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。 其实很多应用软件 阅读全文
posted @ 2020-11-24 17:03 SSunSShine 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 访问者模式(Visitor Pattern) 1.模式动机 在现实生活中,有些集合对象中存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划价员和药房工作人员对它 阅读全文
posted @ 2020-11-24 16:49 SSunSShine 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式(Iterator) 1.模式动机 在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。 既然将遍历方法封装在聚 阅读全文
posted @ 2020-11-24 16:35 SSunSShine 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 责任链模式(Chain of Responsibility) 1.模式动机 在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据需要请假的天数去找不同的领导签名, 阅读全文
posted @ 2020-11-24 16:23 SSunSShine 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 模板模式(Template Method) 1.模式动机 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如,去银行办理业务一般要经过以下4个流程:取号、排 阅读全文
posted @ 2020-11-24 16:12 SSunSShine 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 组合模式(Composite Pattern) 1.模式动机 在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣服与衣柜、以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件 阅读全文
posted @ 2020-11-24 16:04 SSunSShine 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 原型模式(Prototype Pattern) 1.模式动机 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来 阅读全文
posted @ 2020-11-24 15:43 SSunSShine 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 策略模式(Strategy Pattern) 1.模式动机 完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。 在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途 阅读全文
posted @ 2020-10-26 13:48 SSunSShine 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 状态模式(State Pattern) 1.模式动机 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统 阅读全文
posted @ 2020-10-26 13:37 SSunSShine 阅读(705) 评论(0) 推荐(0) 编辑