2010年6月15日
摘要: STRATEGY模式使用了一种特殊的方式来倒置通用算法和具体实现之间的关系。将算法逻辑放到一个具体实现类中(不是抽象类)。将相应的抽象方法定义到一个接口中。在具体调用过程中将对接口的具体实现传递给算法逻辑的实现类,算法类将相应的工作委托给这个接口来实现。该模式与委托类似。该模式涉及到三个角色:Context(应用场景):1、需要使用ConcreteStrategy提供的算法。2、 内部维护一个Strategy的实例。3、 负责动态设置运行时Strategy具体的实现算法。4、负责跟Strategy之间的交互和数据传递。Strategy(抽象策略类):1、 定义了一个公共接口,各种不同的算法以不 阅读全文
posted @ 2010-06-15 15:41 James Cheung 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 如果要严格按照DIP思想进行编程,那么就要对所有易变类使用工厂。如果有必要使用Proxy模式,那么可以使用工厂模式去创建持久化对象,如果要在单元测试过程中添加一个测试桩(欺骗对象),这时也可以通过工厂模式来实现。使用工厂会带来一定的复杂度,但是这些都是可以避免的,尤其是在设计初期。工厂模式允许我们只依赖于抽象接口就能创建出具体对象的实例。该模式对于高度易变的类特别有效。下面是一个具体的例子:假设我们要封装一组文本框控件,如下图:以上是一个简单工厂的常用实现方法,下面介绍一下抽象工厂模式,,抽象工厂模式涉及到以下的角色。抽象工厂(AbstractFactory)角色:担任这个角色的是工厂方法模式 阅读全文
posted @ 2010-06-15 09:03 James Cheung 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 该模式较常见也是使用最频繁的设计模式之一。单态模式的主要作用是保证在JAVA应用程序中某些特定的类只有一个实例存在。该模式的好处: 节省内存及系统开销,使用合适的中间件(.NET Remoting),可以把SINGLETON模式扩展为跨多个CLR或多个计算机工作。任何类都可以方便的转换为SINGLETON模式。只在第一次使用时进行创建。并且它由于限制了实例个数,有利于垃圾回收。缺点:不能继承、效率问题、调用不透明(调用者知道自己在调用谁)示例:常用于数据库访问、单点登录等。下面的代码演示了常用的单态模式的写法:public class Singleton {private Singleton( 阅读全文
posted @ 2010-06-15 08:50 James Cheung 阅读(3291) 评论(0) 推荐(0) 编辑