上一页 1 2 3 4 5 6 7 8 ··· 14 下一页
摘要: Memento 备忘录模式(行为型模式)对象状态的回溯对象状态的变化无端,如何回溯、恢复对象在某个点的状态?动机(Motivation)在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些共有接口来让其他对象得到对象的状态,便会暴... 阅读全文
posted @ 2015-09-01 23:51 JesseLZJ 阅读(185) 评论(0) 推荐(0) 编辑
摘要: Chain Of Responsibility 职责链模式(行为型模式)请求的发送者与接受者某些对象请求的接受者可能有多种多样,变化无常……动机(Motivation)在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者... 阅读全文
posted @ 2015-09-01 23:50 JesseLZJ 阅读(233) 评论(0) 推荐(0) 编辑
摘要: Observer 观察者模式(行为型模式)动机(Motivation)在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”——一个对象(目标对象)的状态发生改变,所有依赖对象(观察者对象)都将得到通知。如果这样的以来对象关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依... 阅读全文
posted @ 2015-09-01 23:49 JesseLZJ 阅读(248) 评论(0) 推荐(0) 编辑
摘要: Interpreter 解释器模式(行为型模式)动机(Motivation)在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达... 阅读全文
posted @ 2015-08-31 11:37 JesseLZJ 阅读(508) 评论(0) 推荐(0) 编辑
摘要: Command 命令模式(行为型模式)耦合与变化耦合是软件不能抵御变化的根本性原因。不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系。动机(Motivation)在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如对行为进行“记录、... 阅读全文
posted @ 2015-08-30 22:35 JesseLZJ 阅读(313) 评论(0) 推荐(0) 编辑
摘要: Template Method 模板方法模式(行为型模式)变与不变变化——是软件永恒的主题,如何管理变化带来的复杂性?设计模式的艺术性和复杂度就在于如何分析,并发现体系中的变化点和稳定点,并使用特定的设计方法来应对这种变化。动机(Motivation)在软件构建过程中,对于某一项任务,它常常有稳定的... 阅读全文
posted @ 2015-08-30 18:57 JesseLZJ 阅读(374) 评论(0) 推荐(0) 编辑
摘要: Proxy 代理模式(结构型模式)直接与间接人们对于复杂的软件系统常常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活、满足特定需求的解决方案。如下图,开始时,A需要和B进行3次通信,当增加一个C后,C和B只需要通信一次,A和C通信3次就好了。动机(Motivation)在面向对象系统中... 阅读全文
posted @ 2015-08-30 00:01 JesseLZJ 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 第20章 咖啡的启示 这个例子对于教学有很多好处。它短小、易于理解并且展示了如何应用面向对象设计原则去管理依赖和分类关注点。但从另一方面来说,它的短小也意味着这种分离带来的好处可能抵不过其成本。就当做一个设计思路来看吧。20.1 Mark IV型专用咖啡机20.1.1 规格说明书 Mark IV... 阅读全文
posted @ 2015-08-29 19:39 JesseLZJ 阅读(975) 评论(0) 推荐(0) 编辑
摘要: 第19章 类图 19.1 基础知识19.1.1 类 类一般表示成下面的样子:分成格间的类图标以及对应的代码 注意类图标中变量和函数名前面的符合。(-)表示private;(#)表示protected;(+)表示public。19.1.2 关联 类之间的关联表示的是那些持有对其他对象引用的实例变... 阅读全文
posted @ 2015-08-29 11:35 JesseLZJ 阅读(736) 评论(0) 推荐(0) 编辑
摘要: 第16章 对象图 有时,呈现出系统在某个特定时刻的状态是非常有用的。和一个正在运行系统的快照类似。UML对象图展示了在一个给定时刻获取到的对象、关系和属性值。 不过,你应该对花太多的对象图保持警惕。在大部分的情况下,它们都可以从相应的类图中直接推导出来,因此没有多少用处。第17章 用例 在所... 阅读全文
posted @ 2015-08-29 01:51 JesseLZJ 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 第15章 状态图 在描述有限状态机(FSM)方面,UML提供个丰富的符合。15.1 基础知识 下图是一个简单的状态迁移图(STD),该图描述了控制用户登录到系统的FSM。圆角矩形表状态。上层格间放置每个状态的名字。下层格间中放置的是一些特定动作,表示当进入或退出该状态时要做什么。 图中左上角的... 阅读全文
posted @ 2015-08-28 20:28 JesseLZJ 阅读(857) 评论(0) 推荐(0) 编辑
摘要: 第14章 使用UML 在探索UML的细节之前,我们应该先讲讲何时以及为何使用它。UML的误用和滥用已经对软件项目造成了太多的危害。14.1 为什么建模 建模就是为了弄清楚某些东西是否可行。当模型比要构建的真实实体便宜很多时,我们就会使用模型来研究设计。14.1.1 为什么构建软件模型 当我们有... 阅读全文
posted @ 2015-08-28 17:32 JesseLZJ 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 第13章 写给C#程序员的UML概述 UML包含3类主要的图示。静态图(static diagram)描述了类、对象、数据结构以及它们之间的关系,藉此表现出了软件元素间那些不变的逻辑结构。动态图(dynamic diagram)展示了软件实体在运行过程中是如何变化的,其中描述了运行流程或者实体改变... 阅读全文
posted @ 2015-08-28 15:49 JesseLZJ 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 第12章 ISP:接口隔离原则 不应该强迫客户程序依赖并未使用的方法。 这个原则用来处理“胖”接口所存在的缺点。如果类的接口不是内敛的,就表示该类具有“胖”接口。换句话说,类的“胖”接口可以分解成多组方法。每一组方法都服务于一组不同的客户程序。这样,一些客户程序可以使用一组成员函数,而其他客... 阅读全文
posted @ 2015-08-28 13:47 JesseLZJ 阅读(758) 评论(0) 推荐(0) 编辑
摘要: 第11章 DIP:依赖倒置原则DIP:依赖倒置原则:a.高层模块不应该依赖于低层模块。二者都应该依赖于抽象。b.抽象不应该依赖于细节。细节应该依赖于抽象。11.1 层次化 下图展示了一个简单的层次化方案: 高层的Policy层使用了低层的Mechanism层,而Mechanism层又使用了更细节... 阅读全文
posted @ 2015-08-27 23:17 JesseLZJ 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 第10章 LSP:Liskov替换原则 Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(base type)。10.1 违反LSP的情形10.1.1 简单例子 对LSP的违反导致了OCP的违反:struct Point { double x, y;}public enu... 阅读全文
posted @ 2015-08-27 22:10 JesseLZJ 阅读(545) 评论(0) 推荐(1) 编辑
摘要: 第9章 OCP:开放-封闭原则 软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。9.1 OCP概述 遵循开放-封闭原则设计出的模块具有两个主要特征: (1)对于扩展是开放的(open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进... 阅读全文
posted @ 2015-08-27 18:12 JesseLZJ 阅读(1092) 评论(2) 推荐(0) 编辑
摘要: 第8章 SRP:单一职责原则 一个类应该只有一个发生变化的原因。8.1 定义职责 在SRP中我们把职责定义为变化的原因。如果你想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。同时,我们很难注意到这一点。我们习惯于以组的形式去考虑职责。违反SRP的示例代码:public inter... 阅读全文
posted @ 2015-08-27 15:21 JesseLZJ 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 第7章 什么是敏捷设计 可以使用许多不同的媒介描述设计,但是设计最终体现为源代码。从根本上讲,源代码就是设计。7.1 设计臭味 如果幸运,你会在项目开始时就想到了系统的清晰图像。系统设计是存在你脑中的一幅至关重要的图像。如果幸运一点,在首次发布时,设计依然保持清楚。 接着,事情开始变糟。软件像... 阅读全文
posted @ 2015-08-27 13:13 JesseLZJ 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 第5章 重构 在Martin Fowler的名著《重构》一书中,他把重构定义为:“在不改变代码外在行为的前提下对对代码做出修改,以改进代码内部结构的过程。”可是我们为什么要改进已经能够工作的代码结构呢?我们不是都知道“如果它没有坏,就不要去修理它!”吗? 每一个软件模块都有3项职责。第一个职责是... 阅读全文
posted @ 2015-08-26 23:30 JesseLZJ 阅读(832) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 14 下一页