在上一篇里我们谈了谈为何设计模式,那接下来我们再浅谈一下在面向对象设计中我们经常要遵循的一些原则。这些原则是经过无数的前人总结出来的经验的结晶。只有遵循这些原则,你才有可能涉及出优秀的代码。今天我们要谈的原则有七大原则,即:单一职责,里氏替换,迪米特法则,依赖倒转,接口隔离,合成/聚合原则,开放-封闭 。
1. 开闭原则
定义:软件实体应当对扩展开放,对修改关闭。这句话说得有点专业,...
分类:
其他好文 时间:
2014-07-01 07:56:00
阅读次数:
200
设计模式--6大原则--开闭原则摘要: 开闭原则(Open Closed Principle)开闭原则的核心是:软件实体应当对扩展开放,对修改关闭,也就是:软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,引入...
分类:
其他好文 时间:
2014-06-28 16:17:37
阅读次数:
281
遵循开闭原则设计出的模块具有两个主要特征:(1)对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。(2)对于修改是关闭的(Closed for modi...
分类:
其他好文 时间:
2014-06-28 16:09:16
阅读次数:
257
先看图上面的设计利用命令模式实现对任务的创建,可以解耦,解耦后方便的新增任务,和管理任务(取消任务等操作)更遵循开闭原则任务对象Task是命令父类,其LoginTask等子类是具体命令 任务调用者TaskInvoker是服务员,网站Site是执行者,即任务调用者利用任务来命令网站去执行某些任务,比如...
分类:
其他好文 时间:
2014-06-27 23:17:23
阅读次数:
270
1、开闭原则简介 开闭原则对扩展开放,对修改关闭,开闭原则是面向对象设计中可复用设计的基石。 2、开闭原则的实现 实现开闭原则的关键就在于抽象,把系统的所有可能的行为抽象成一个抽象底层,这个抽象底层规定出所有的具体实现必须提供的方法的特征。作为系统设计的抽象层,要预见所有可能的扩展,从而...
分类:
其他好文 时间:
2014-06-25 22:05:29
阅读次数:
304
设计模式六大原则(6):开闭原则定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化...
分类:
其他好文 时间:
2014-06-25 17:47:16
阅读次数:
130
在OO设计领域,我们知道前人总结了不少的经验,许多的经验在现代软件工程过程中已经被认为是原则来遵守。下面笔者摘抄几项下文涉及到的OO原则的定义。OCP(开闭原则,Open-Closed
Principle):一个软件的实体应当对扩展开放,对修改关闭。我的理解是,对于一个已有的软件,如果需要扩展,应当...
分类:
其他好文 时间:
2014-06-07 00:25:38
阅读次数:
326
所有的设计模式都是对不同的可变性的封装,从而使系统在不同角度达到“开闭原则”的要求。
在软件软件系统中,一个模块设计得好不好的最主要、最重要的标志,就是该模块在多大程度上将自己的内部数据和其他与实现有关的细节隐藏起来。一个设计得好的模块可以将它所有的实现细节隐藏起来,彻底地将提供给外界...
分类:
编程语言 时间:
2014-06-02 07:17:08
阅读次数:
271
在上一篇的工厂方法模式中,通过一个公用的类对其他具有相同特性(实现相同接口或继承同一父类)的类的对象进行创建。随之带来的问题在于:当新定义了一个具有相同特性的类时,需要修改工厂类。这与设计模式中的开闭原则有些违背。因此,通过抽象工厂模式:创建多个工厂类而不是一个工厂类,一旦需要创建新的类对象,只需增...
分类:
其他好文 时间:
2014-05-26 13:49:47
阅读次数:
218
简单工程模式适用于一个复杂子类的的创建问题。通过一个工厂对象解除
功能代码与客户端的耦合。简单工厂的优点是,在工厂类中加入了必要的逻辑判断,根据用户的选择动态实例化相关的类,对用户来说这种方式去除了客户端与具体产品类的耦合。但是每扩展一次功能,就需要修改逻辑判断的代码。不符合开闭原则。类图结构如下(...
分类:
其他好文 时间:
2014-05-26 09:41:13
阅读次数:
226