设计模式
文章平均质量分 50
miracle9i
这个作者很懒,什么都没留下…
展开
-
设计模式_STRATEGY
期末考期间实在无聊,不想看那些本学期无聊的课程,随便应付下能过的,于是坐在图书馆,书架上抓了本《Head First: Design Pattern》 先说这确实是本好书,不愧是JOLT大奖得主,ORELLY出品,必属精品(虽然这句话是用来形容暴雪的),但书中那样趣味的写法和图示一扫我之前对设计模式的理解障碍。之前看的那些图书,你必定有一定的OO代码编写经验,而且一个个枯燥的类图,你根本无法原创 2007-07-13 17:27:00 · 607 阅读 · 0 评论 -
Decorator模式
装饰模式:用于动态地给一个对象添加一些额外的职责。 一种为类增加功能的方式是:继承原有的类,在重载方法上添加新的职责(或业务逻辑),其实还有一种更好的方法,即为装饰模式。《大话设计模式》中以给人穿衣服这样的过程,展示了动态穿衣的过程: 以人作为Component:/** * 例子比较简单,未使用Component的继承 * @author guozw * */public cl...2008-08-11 17:34:07 · 102 阅读 · 0 评论 -
单一职责原则,开-闭原则,依赖倒置原则
《大话设计模式》连续三章讲述了三个原则,把这些重要语录摘抄下来,供我日后好好理解。 单一职责原则(Simple Response Principle):就一个类而言,应该仅有一个引起他变化的原因。当一个类承担了过多的职责,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当设计变化时,设计会遭受到意想不到的破坏。软件设计真正要做...2008-07-29 00:29:51 · 134 阅读 · 0 评论 -
策略模式
策略模式:一种定义一系列算法的方法,所有的这些方法都完成相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少算法类与使用算法类间的耦合。策略模式封装了几乎所有的类型规则,只要是在不同时间应用不同的业务规则,都可以考虑使用策略模式处理这种变化的可能性。 使用策略封装算法,同样+-*/的例子,来演示下先:定义抽象策略类:public abstract class Strategy...2008-07-28 16:46:59 · 89 阅读 · 0 评论 -
使用枚举复用规则
在之前的简单工厂模式中,使用了工厂方法来构建不同的算法实现类。在工厂类中使用了if语句,定义了许多的if规则来判断具体要构造哪个算法实现类,这样调用类无需知道要创建具体的哪个算法实现类。但在工厂类中仍旧有许多if的分支,怎样消灭这些if呢?在jdk5.0引入的枚举类型,似乎可以派上用场。枚举类型可以在一个对象只生成特定的几种对象时候用,每个生成的对象只是单例的时候用。 在这里,可以将各种...2008-07-28 16:11:03 · 643 阅读 · 0 评论 -
简单工厂模式
可以使用简单工厂模式,避免调用类中的代码坏味道,在下面的例子中,主要是避免判断代码直接写在调用类中。 首先定义抽象类,抽象类中封装了操作属性:public abstract class Caculation { protected double numberA; protected double numberB; public abstract double caculate(); ...2008-07-28 15:17:40 · 87 阅读 · 0 评论 -
Observer模式
继续对《Head first》的阅读,现在是observer模式。 书中对观察者模式的引入是一个天气预报系统,它要求能对三种类型的不同客户端显示不同的数据。偶的面向对象经验匮乏,类图揭晓之前一直认为在“主题”中要包含“观察者”,看完最终的设计,呼。。。 对了很小很小一点。它们是相互注册的。 对于一般的OO中的1:N的关系,仅需在"1"方包含对"N"方每个实例的引用。而对于需...2007-07-22 23:54:00 · 85 阅读 · 0 评论 -
设计模式_STRATEGY
期末考期间实在无聊,不想看那些本学期无聊的课程,随便应付下能过的,于是坐在图书馆,书架上抓了本《Head First: Design Pattern》 先说这确实是本好书,不愧是JOLT大奖得主,O'RELLY出品,必属精品(虽然这句话是用来形容暴雪的),但书中那样趣味的写法和图示一扫我之前对设计模式的理解障碍。之前看的那些图书,你必定有一定的OO代码编写经验,而且一个个枯燥的类图,你根本无法记...2007-07-13 17:27:00 · 74 阅读 · 0 评论 -
Observer模式
继续对《Head first》的阅读,现在是observer模式。 书中对观察者模式的引入是一个天气预报系统,它要求能对三种类型的不同客户端显示不同的数据。偶的面向对象经验匮乏,类图揭晓之前一直认为在“主题”中要包含“观察者”,看完最终的设计,呼。。。 对了很小很小一点。它们是相互注册的。 对于一般的OO中的1:N的关系,仅需在"1"方包含对"N"方每个实例的引用。而对原创 2007-07-22 23:54:00 · 491 阅读 · 0 评论 -
装饰模式续:与策略间...
装饰模式最大的好处就是避免在添加类的职责时使用单纯的继承,本来想写个例子体会继承的痛苦,改进了下,写成了组合的形式:public class Person { private String name; private Set<Clothes> clothes = new HashSet<Clothes>(); public void show(){ for(Cl...2008-08-12 00:35:20 · 95 阅读 · 0 评论