
设计模型之我见
salever
这个作者很懒,什么都没留下…
展开
-
COMMAND 模式
Command 模式大概是最简单的设计模式了,说其简单是因为它形式上看起来非常简单,该模式仅由一个具有唯一功能特性的方法组成。public inerface Command{ public void do();} Command 模式在事务操作上应用尤其广泛,例如数据库事务处理。假定现在要对数据库中的雇员信息表进行操作,可能涉及到增、删、改、查四种操作,这四种操作就原创 2010-03-11 19:20:00 · 663 阅读 · 0 评论 -
NULL OBJECT 模式
Null Object 模式的使用比较特别,主要用来实现程序的稳定性和统一化。一下代码很常见:public void do(Object obj){ if(obj == null){ ....//code 1 }else{ ...//code 2 }}如果忘记了判断obj,则会出现无法预料的情况。但是,太多的null原创 2010-03-11 19:24:00 · 754 阅读 · 0 评论 -
MEDIATOR 模式
Mediator(调停人) 模式也是用来把某种策略施加到另一组对象上,不同与Facade 模式的是,它采用隐蔽的方式去施加策略。外部在感受到这个变化的同时,觉察不到实现上的修改。Mediator 对用户是隐藏的。比如实现文本输入高亮显示程序。Facade 模式实现:public class HighLightText extends JText{ ... //Code to原创 2010-03-11 19:23:00 · 597 阅读 · 0 评论 -
FACADE 模式
Facade (正面)模式,用于为一组负责的功能接口,提供一个简单而且特定的接口。比如Java.sql 提供了许多操作数据库的接口,功能众多,现在有一个BookData 对象,需要与数据库进行交互,根据FACADE 模式,设计出一个DB 类,封装了BookData的数据库操作。这样,DB 类与java.sql 直接交互,对外提供了BookData 的操作接口。public class DB原创 2010-03-11 19:23:00 · 435 阅读 · 0 评论 -
STRATEGY 模式
Strategy 模式实现与Template Method 模式类似的功能,实现通用算法与具体实现的分离。不同点在于,它使用另外一种方式解除了通用算法与具体实现的依赖性。再来看BubbleSorter 基类。将抽象方法提取出来,定义到一个SortHandler 接口中,在BubbleSorter 基类中调用接口的方法。接口:public interface SortHandler{ p原创 2010-03-11 19:22:00 · 589 阅读 · 0 评论 -
TEMPLATE METHOD 模式
Template Method 模式使用继承,来分离通用的算法和具体的上下文。简单的讲,我有一个冒泡排序的程序,用来对int 型数据排序,要想对double 类型的数据排序,可能又得重新编写一个排序程序。Template Method 模式则避免了这种冗余的做法,它将通用的算法过程抽象出来,形成抽象基类,然后不同的算法采用自己的继承子类实现。冒泡排序抽象基类:public abstract原创 2010-03-11 19:21:00 · 524 阅读 · 0 评论 -
设计模式
最近看了Uncle Bob 的大作,《敏捷软件开发》,受益颇深,尤其是里面讲述的设计模式,感觉很不错,这里且记录下来,慢慢积累。原创 2010-03-11 19:18:00 · 583 阅读 · 0 评论 -
COMPOSITE 模式
Composite 模式是一个非常简单但具有深刻内涵的模式。它使一组对象表现得像单一一个对象。还是Shape 的例子。public interface Shape{ void draw();}public class CompositeShape implements Shape{ private List shapes = new LinkedList():原创 2010-03-11 19:25:00 · 703 阅读 · 0 评论 -
FACTORY 模式
在任何使用new 的地方使用Factory 模式,这将最大程度上降低具体类之间的依赖性。这是Factory 模式的设计初衷。A a = new A();使用Factory 模式以后A a = AFactory.createA();如何存在多种继承和关联关系,那么使用Factory 模式无疑比简单的new 更加合理。public abstract class Shape{原创 2010-03-11 19:25:00 · 572 阅读 · 0 评论 -
SINGLETON 模式和MONOSTATE 模式
Singleton 和 Monostate 都是用来实现单例模式的,但二者实现机制上有所不同。Singleton 模式使用私有构造函数,一个静态变量以及一个静态方法对实例化进行控制和限制;而Monostate 则是简单的把对象的所有变量都编程静态的。Monostate 模式实例:public class Monostate{ private static int x = 0;原创 2010-03-11 19:24:00 · 550 阅读 · 0 评论 -
OBSERVER 模式
接下来是Observer 模式。Observer,观察者模式,这个模式在面向对象设计中使用的相当普遍,它遵循OCP、LSP、ISP等设计原则。下面使用一个日常生活中的示例来讲解一下观察者模式。Observer1:Firer(消防员)Subject:Building(大厦) 消防员来时刻关注大厦的情况,一旦出现火灾,必须马上响应——response()。但是消防员不能一天24原创 2010-03-11 19:26:00 · 779 阅读 · 0 评论