adapter
摘要:适配(转换)概念无处不在 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换成兼容的接口。 动机 在软件系统中,由于应用环境的变化,常常需要将一些现存的对象放在新的环境中应用,但是新的环境要 求的接口是这些现存对象所不满足的。 如何英对这种迁移的变化?如何既利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口? 意图 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原...
阅读全文
posted @
2008-05-06 22:22
IT Person
阅读(383)
推荐(0)
Factory Method
摘要:从耦合关系谈起 耦合关系直接决定着软件面对变化时的行为 模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之改变 模块与模块之间的松耦合使得软件面对变化时,一些块更容易被替换或者更改,但其他模块保持不变 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到 子类。 动机: 在软件系统中,经常面临着某个对象的创建工作,由于需求的变...
阅读全文
posted @
2008-04-26 01:14
IT Person
阅读(207)
推荐(0)
Builder
摘要:Builder模式的缘起 假设创建游戏中的一个房屋设施,该房屋的构建由几个部分组成,而且各个部分要富于变化。 如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正 动机 再软件系统中,有时候面临着一个复杂对象的创建工作,通常由各个部分的子对象用一定的算法构成由于 需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将他们组合在一起的算法却相对稳定 。 如何英对这种变化...
阅读全文
posted @
2008-04-09 22:22
IT Person
阅读(289)
推荐(0)
Singleton
摘要:模式分类 从目的来看: 创建型:负责对象创建 结构型:处理类与对象间的组合 行为型:类与对象交互中的职责分配。 从范围来看: 类模式处理类与子类的静态关系。 对象模式处理对象间的动态关系。 动机 在软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才能确保他们的逻辑 正确性,以及良好的效率。 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例? 这应该是类设计者的责任...
阅读全文
posted @
2008-03-31 22:33
IT Person
阅读(289)
推荐(0)
Abstract Factory
摘要:new的问题: 常规的对象创建方法: Road road = new Road(); new的问题: 实现依赖,不能应付具体实例化类型的变化。 解决思路: 封装变化点-哪里变化,封装哪里 潜台词:如果没有变化,当然不需要额外的封装。 工厂模式的缘起: 变化点再对象创建,因此就封装对象创建 面向接口编程-依赖接口,而非依赖实现 最简单的解决方法: --------------------------...
阅读全文
posted @
2008-03-11 23:06
IT Person
阅读(259)
推荐(0)
深克隆
摘要:/** * @(#)DeepClone.java * * * @author leo * @version 1.00 2008/3/10 */ import java.io.Serializable; import java.io.IOException; import java.io.OptionalDataException; import java.io.*; public cl...
阅读全文
posted @
2008-03-09 13:05
IT Person
阅读(329)
推荐(0)
Prototype
摘要:依赖关系的倒置 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。抽象变化慢,实现变化快。 动机: 在软件系统中,经常面临着某些结构复杂的对象的创建工作由于需求的变化,这些对象经常面临着剧烈的 变化,但是他们却拥有比较稳定一致的接口。 如何应对这种变化?如何向客户程序隔离出这些易变对象,从而使得依赖这些易变对象的客户程序不随着 需求改变而改变? 意图: 使用原型实例指定创建对象的种类,然后通过拷贝...
阅读全文
posted @
2008-03-06 22:52
IT Person
阅读(271)
推荐(0)