摘要:
第6讲:Prototype 原型模式2005.12.30 李建忠依赖关系的倒置抽象不应该依赖于实现细节,实现细节应该依赖于抽象。-抽象A直接依赖于实现细节b(软件易脆,很容易需要重新编译)-抽象A依赖于抽象B,实现细节b依赖于抽象B动机(Motivation)在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求改变而改变?意图(Intent)使用原型实例指定创建对象的种类,然后通过 阅读全文
posted @ 2012-04-05 15:26
woainilsr
阅读(199)
评论(0)
推荐(0)
摘要:
第5讲:Factory Method 工厂方法模式2005.12.19 李建忠从耦合关系谈起耦合关系直接决定着软件面对变化时的行为-模块与模块之间的紧耦合使得软件面对变化时,相关模块都要随之更改-模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变抽象部分变化慢,细节(具体)部分变化快;高层部分变化慢,底层部分变化快。当我们对于系统的认识无法梳理出上面的图时,最好不要一开始就用设计模式,设计模式其实是一个演绎的过程。当我们对软件认识不断深化时,慢慢就会知道哪些是主要的,哪些是次要的,就能梳理出一个抽象和具体的层次,再考虑用哪种设计模式。第二幅图满足了依赖倒 阅读全文
posted @ 2012-04-05 15:07
woainilsr
阅读(194)
评论(0)
推荐(0)
摘要:
第4讲:Builder 生成器模式2005.11.29 李建忠Builder模式的缘起假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化。如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正……动机(Motivation)在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改 阅读全文
posted @ 2012-04-05 14:55
woainilsr
阅读(287)
评论(0)
推荐(0)
摘要:
第2讲:Singleton 单件2005.10.25 李建忠模式分类从目的来看:-创建型(Creational)模式:负责对象创建-结构型(Structural)模式:处理类与对象间的组合-行为型(Behavioral)模式:类与对象交互中的职责分配从范围来看:-类模式处理类与子类的静态关系-对象模式处理对象间的动态关系动机(Motivation)在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?这应该是类设计者的责任,而不是使用者的责任意图(Intent)保证一个类仅 阅读全文
posted @ 2012-04-05 14:37
woainilsr
阅读(852)
评论(0)
推荐(0)
摘要:
工厂模式(静态工厂模式、工厂方法模式、抽象工厂模式)一、引子话说十年前,有一个暴发户,他家有三辆汽车——Benz 奔驰、Bmw 宝马、Audi 奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上 Benz 车后跟司机说“开奔驰车!”,坐上 Bmw 后他说“开宝马车!”,坐上 Audi 说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象。幸运的是,这种有病的现象在 OO(面向对象)语言中可以避免了。下面就以 Java 语言为基础来引入我们本文的主题:工厂模式。二、分类 工厂模式主要是为创建对象提供过渡接. 阅读全文
posted @ 2012-04-05 11:34
woainilsr
阅读(3972)
评论(0)
推荐(0)
摘要:
开闭原则简介 开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。 1988年,Bertrand Meyer在他的著作《Object Oriented Software Construction》中提出了开闭原则,它的原文是这样:“Software entities should be open for extension,but closed for modification”。翻译过来就是:“软件实体应当对扩展开放,对修改关闭”。这句话说得略微有点专业,我们把它讲得更通俗一点,也就是:软件系统中包含的各种组件,例.. 阅读全文
posted @ 2012-04-05 11:01
woainilsr
阅读(453)
评论(0)
推荐(0)