现在位置: 首页 > 设计模式
2020-04-03 17:18 工业·编程 ⁄ 共 1173字 暂无评论
1. 把变化的部分都用组合、聚合或依赖实现,不变的部分用继承实现      Visitor模式, 将经常删减的操作中继承体系中提炼出来,成为操作类,每个类中的操作对应原有的不变的继承体系      Strategy模式,将可扩充的算法使用依赖实现;接口抽闲出来      Observer模式,将观察者放在被观察者的依赖列表中;不变的update部分使用继承实现,各个观察者各自实现update...
阅读全文
2020-03-27 15:28 工业·编程 ⁄ 共 1162字 暂无评论
设计模式是中级程序员向高级程序员过渡的关键,跨不过这道坎,无论有多少经验,你都不会真正体会到编程之美。 那么什么是设计模式?简单的说就是套路,招数,和搏击中的套路和招数是一个意思。 我们学习一门语言(例如java),基本语法类似于搏击中的基本功(类似直拳、勾拳、侧踢),而设计模式则类似于组合技。 搏击中的组合技适合不同的场景,例如倒地的时候,如果对手的关节处于合适的位置,专业的格斗家会选择一个“十字绞”...
阅读全文
2019-05-17 05:29 工业·编程 ⁄ 共 1619字 暂无评论
1.含义 一个类只能实例化出一个对象 2.单例模式实现的两种方式 饿汉模式 我们在程序运行之初就将对象创建好,就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象。是以空间换时间的做法。这样程序运行中想要调用这个实例时都可以直接使用。举个例子:就像是一个人在吃完饭后立刻就去将碗洗了,这样以便于在下一次开饭的时候可以马上吃到饭。 实现原理: 为了在运行前就实例化好对象,并且不允许其他方式来实例化对象...
阅读全文
2019-03-31 21:07 工业·编程 ⁄ 共 10581字 暂无评论
我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。 面向对象设计原则和设计模式也是对系统进行合理重构的指导方针。 常用的面...
阅读全文
1.概述 在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同。 例子1:顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中,顾客需要对这些商品进行访问,以便确认这些商品的质量,之后收银员计算价格时也需要访问购物车内顾客所选择的商品...
阅读全文
1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。 例子1:银行业务办理流程 在银行办理业务时,一般都包含几个基本固定步骤: 取号排队->办理具体业务->对银行工作人员进行评分。 取号取号排队和对银行工作人员进行评分业务逻辑是一样的。但是办理具体业务是个不相同的...
阅读全文
1.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来...
阅读全文
1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或switch case)语句的增多或者修改)可能会引起很大的修改,而程序的可读性,扩展性也会变得很弱。维护也会很麻烦。那么我就考虑只修改自身状态...
阅读全文
1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。 通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代码环境的改变而对代码做大的修改。也许,你只想根据你的具体应用环境而改进通信代码。或者,你只想简单的重新构造通信代码来避免类和类之间的相互依赖与相互从属。 2.问题 当一个...
阅读全文
1.概述 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各个对象中。 对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,每一个对象都知道其他所有的对象,这无疑复杂化了对象之间的联系。虽然将一个系统分割成许多对象通常可以增强可复用性,但是对象间相互连接的激增又会降低其可复用性,大量的...
阅读全文