俊介三

一天更新一点,一天积累一点

导航

随笔分类 -  Design Pattern

摘要:单例模式,确保一个类只有一个实例,并且提供一个全局访问点。这算是设计模式中最最最简单的一个。就是说,我想创建一个类,这个类只允许一个实例,就能用这个模式。什么场景下我只要并且只能有一个实例呢?如数据库连接、如打印机连接等。。class Singleton{ //volatile强制每次都跟原来的成员变量进行比较,防止在线程中出错。 private volatile static Singleton uniqueInstance; //私有构造方法 private Singleton(){} //公共静态方法,使得通过类名就能调用它 p... 阅读全文

posted @ 2013-03-23 14:45 俊介三在前进 阅读(102) 评论(0) 推荐(0)

摘要:装饰者模式:当需要给对象添点数据,加点小功能时,这个模式最合适了。这两个例子最典型:有一杯咖啡,可以给它加奶、加糖、加巧克力、加泡沫,有的消费者要加奶加糖的;有的要加巧克力加盐的;总之就是不同的小需求的对象的构建Java IO 是典型的装饰者模式。InputSteam in = new LineNumberInputStream(new BuffredInputStream(new FileInputSteam); 把各种小需求加进这个输入流中。缺点是:类太多了!!没有个类图,直接看它API烦得要死~类图如下:贴一个装饰者模式的例子:public class DecoratorPattern 阅读全文

posted @ 2013-03-23 10:35 俊介三在前进 阅读(123) 评论(0) 推荐(0)

摘要:观察者模式是一个常用模式:有一个主题(subject),有很多观察者(observers)注册了此主题。那么此主题一旦发布新的数据,这些注册了此主题的观察者就能够察觉这些数据的更新,根据这些更新的数据进行各自的处理。就像订报纸一样。报社(subject)一旦发布新的报纸,他就主动把这些新的报纸发送给订户们(observers)。而不是订户是不是去报社看看有新报纸没~下面看看这个类图:这是一个天气预报的类图,气象站(WeatherData)一旦发布新的天气数据,它的订户们(各种形式的公告板,如StatisticDisplay,ForecastDisplay等)就能收到最新的天气数据,进行更新(P 阅读全文

posted @ 2013-03-22 12:29 俊介三在前进 阅读(174) 评论(0) 推荐(0)

摘要:先贴一个策略模式的示例类图:策略模式这样定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用使用算法的客户。上面类图的意思就是鸭子有飞的行为和叫的行为。但不同鸭子有不同的飞和叫的行为。因此把飞和叫的行为(算法)独立出来。各个具体的鸭子分别使用各自需要的行为。我认为策略模式的核心就是:把会变化的、可扩展的独立出来。面向接口来编程。高层(即抽象)的只调用高层接口、类等。具体的类再通过抽象的方法进行调用。利用这个例子再通俗地讲一次吧:我有一只抽象的鸭子,它有很多具体的实现类,如橡皮鸭子、红头鸭子等。这些鸭子在非常抽象的层面上都有共同的行为,如怎么飞和怎么叫。那么,现 阅读全文

posted @ 2013-03-18 19:59 俊介三在前进 阅读(110) 评论(0) 推荐(0)