
设计模式
二当家的黑板报
http://www.edjdhbb.com
展开
-
装饰者模式
解决的问题是:我有一个类A,里面可能需要很多不同行为的功能。 现在有三种解决方法,第一种:每个功能都弄成一个类,然后继承类A,这种的问题是,如果功能很多,会造成类爆炸。 第二种:我将功能类组合上类A上,这种想法是好的,但还没够弹性,因为这样我没法在不修改类A的情况下对功能的动态添删。(我的目的就是在不修改类A的情况下,对类A进行功能扩展) 第三种:就是我要说的装饰者模原创 2014-05-11 12:07:22 · 845 阅读 · 0 评论 -
策略模式
有种动物叫鸭,鸭又有很多种,有绿头鸭、红头鸭、橡皮鸭等,所以是多种鸭继承抽象类鸭。 每种鸭都有共同的行为,如外表,游泳,飞行,叫等。所以有抽象方法:abstract void display();abstract void swim(); 每一种鸭都有不同的外表,但外表都是固定的,以后都不会改变的,所以在子类中可以写死: display(){//外表的实现原创 2014-04-26 21:06:05 · 816 阅读 · 0 评论 -
模板方法模式
定义 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 通俗理解就是:在一个基类里面,定义了一个算法的流程(里面调用了很多方法),其中一些方法是基类已经实现的,一些是需要具体子类或实现类来实现的,还有一下是钩子(允许子类或实现类重写,如果不重写就按默认的执行),那么那个基类的流程方法就是模板方法。原创 2014-08-10 13:51:44 · 793 阅读 · 0 评论 -
状态模式
定义 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 具体来说就是:因为这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,我们知道行为会随着内部状态而改变。 从客户的视角来看:如果说你使用的对象能够完全改变它的行为,那么你会觉得,这个对象实际上是从别的类实例化而来的。然而,实际上,你知道我们是在使用组合通过简单应用不同的状原创 2014-08-13 11:02:52 · 1061 阅读 · 1 评论 -
设计模式之观察者模式
应对的情况:当一个可观察者的状态发生改变时,观察者的数据也要实时更新。 你可能第一时间会想到的是,直接在可观察者类上调用观察者的方法就行了。是的,这是一种最直接,也是最简单的方法。但这样做就使得可观察者和观察者的耦合性很高,且不能动态更改观察者的数量。 我们或许可以这样做,写一个可观察者的接口:public interface Subject { public void原创 2014-05-05 14:34:52 · 1285 阅读 · 1 评论 -
设计模式之单件模式
有人说单件模式是最简单的模式,因为它只有一个类,但其实它还有一些值得注意的地方,就如:出现并发性时,单件可能已经不是单件了。 先说一下,我们为什么要用到单件模式,当我们用到这些对象如:线程池,缓存,注册表和日志对象等,事实上,这些对象我们只能有一个实例,不然会导致很多问题出现,所以我们要将它弄成单件的。 可能你会说利用程序员之间的约定或是利用全局变量就可以做到啊,如:java的原创 2014-07-19 15:38:00 · 4605 阅读 · 3 评论