摘要: Strategy策略模式是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.Stratrgy应用比较广泛,比如, 公司经营业务变化图, 可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现.这里以字符串替代为例, 有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案.首先,我们建立一个抽象类RepTempRule 定义一些公用变量和方法:public abstract class RepTempRule{pr 阅读全文
posted @ 2011-08-09 16:29 Kevin Bing 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 由简单的开始会比较好理解状态模式的作用,先来看一个例子,如果您有一个只能顺时针转动的瓦斯开关,转动一次的状态为off、 small fire、medium fire与large fire,您如何在程式中控制状态的变化与行为呢?一个最简单的方式就是用if..else或是switch流程来控制,例如:State.javapublic class State { private int state; public State() { state = 0; } public void switchFire() { if (s... 阅读全文
posted @ 2011-08-09 15:53 Kevin Bing 阅读(164) 评论(0) 推荐(0) 编辑
摘要: Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用.Command模式实际上不是个很具体,规定很多的模式,正是这个灵活性,让人有些confuse.Command定义n 将来自客户端的请求传入一个对象,无需了解这个请求激活的 动作或有关接受这个请求的处理细节。这是一种两台机器之间通讯联系性质的模式,类似传统过程语 言的 CallBack功能。优点:解耦了发送者和接受者之间联系。 发送者调用一个操作,接受者接受请求执行相应的动作,因为使用Command模式解耦,发送者无需知道接受者任何接 阅读全文
posted @ 2011-08-08 15:20 Kevin Bing 阅读(248) 评论(0) 推荐(0) 编辑
摘要: Chain of Responsibility定义Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request. 也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。如何使用?虽然这一段是如何使用CoR,但是也是演示什么是CoR.有一个Handler接口:public interface Handler{ public void handleRequest();}这是一个处理. 阅读全文
posted @ 2011-08-08 14:29 Kevin Bing 阅读(134) 评论(0) 推荐(0) 编辑
摘要: Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Observer(观察者)模式是比较常用的一个模式,尤其在界面设计中应用广泛,而本站所关注的是Java在电子商务系统中应用,因此想从电子商务实例中分析Observer的应用.虽然网上商店形式多样,每个站点有自己的特色,但也有其一般的共性,单就"商品的变化,以便及时通知订户"这一点,是很多网上商店共有的模式,这一模式类似Obse 阅读全文
posted @ 2011-08-08 10:47 Kevin Bing 阅读(180) 评论(0) 推荐(0) 编辑
摘要: Memento备望录模式定义:memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.Memento模式相对也比较好理解,我们看下列代码:public class Originator { public int number; public File file = null; public Originator(){} // 创建一个Memento public Memento getMemento(){ return new Memento(this); } // 恢复到原始值 public void setMemento(M... 阅读全文
posted @ 2011-08-08 10:35 Kevin Bing 阅读(158) 评论(0) 推荐(0) 编辑
摘要: Template模板模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中.使用Java的抽象类时,就经常会使用到Template模式,因此Template模式使用很普遍.而且很容易理解和使用。public abstract class Benchmark{ /** * 下面操作是我们希望在子类中完成 */ public abstract void benchmark(); /** * 重复执行benchmark次数 */ public final long repeat (int count) { if (count <= 0) return 0;... 阅读全文
posted @ 2011-08-08 10:27 Kevin Bing 阅读(231) 评论(0) 推荐(0) 编辑
摘要: Flyweight模式定义:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类).为什么使用?面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以被共享的类,另外,还有一些特性是取决于应用(context),是不可共享的,这也Flyweight中两个重要概念内部状态intrinsic和外部状态extrinsic之分.说白点,就是先捏一个的原始模型,然后随着不同场合 阅读全文
posted @ 2011-08-08 09:36 Kevin Bing 阅读(151) 评论(0) 推荐(0) 编辑
摘要: Bridge模式定义:将抽象和行为划分开来,各自独立,但能动态的结合。任何事物对象都有抽象和行为之分,例如人,人是一种抽象,人分男人和女人等;人有行为,行为也有各种具体表现,所以,“人”与“人的行为”两个概念也反映了抽象和行为之分。在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为接口,这就是桥模式的用处。为什么使用?不希望抽象部分和行为有一种固定的绑定关系,而是应该可以动态联系的。如果一个抽象类或接口有多个具体实现(子类、co 阅读全文
posted @ 2011-08-05 16:47 Kevin Bing 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 装饰模式:Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator模式中是必须的.Decorator定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活.为什么使用Decorator?我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能 阅读全文
posted @ 2011-08-05 15:26 Kevin Bing 阅读(199) 评论(0) 推荐(0) 编辑