随笔分类 -  设计模式

设计模式18---解释器模式
摘要:解释器模式常用的场景是计算器,或者说公式。也就是说解释的符号满足公式的元素,而client端把每个元素的内容代换掉就可以。package com.jayfulmath.designpattern.experssion;import java.util.HashMap;public abstract ... 阅读全文

posted @ 2015-01-05 18:09 Joyfulmath 阅读(183) 评论(0) 推荐(0) 编辑

设计模式17---享元模式
摘要:1.客户需要做网站,有很多客户,每个需求细节不同,但是主体框架类似,并且如何有很多客户的话,将会照成大量的资源浪费,所以,把相同的部分进行共享,通过ID的方式来加以区别不同的部分。2.UMLFlyweight定义了共享的部分,ConcreateFlyweight定义了内部状态,或者说相同的部分。Un... 阅读全文

posted @ 2015-01-05 15:20 Joyfulmath 阅读(422) 评论(0) 推荐(0) 编辑

设计模式16---中介者模式
摘要:国家之间关系复杂,但是有了联合国了以后,大家都到联合国上解决问题,这就是中介者。1.college1 和college2之间是不可见的,也就是不会直接通信2.ConcreateMedia 和各College之间是直接相关的。这样college1 和college2之间的交流可以通过Concreate... 阅读全文

posted @ 2015-01-04 16:03 Joyfulmath 阅读(159) 评论(0) 推荐(0) 编辑

设计模式15---桥接模式
摘要:当一个事物或者过程有很多变化时,比如开车走路,如何我们用继承的方法,类的数目会几何增长。但是我们如何把每个变化隔离开来,也就是,车子和路况隔离开来,这样每个变化都是独立的。public abstract class Automobile { public static final int TY... 阅读全文

posted @ 2014-12-18 16:27 Joyfulmath 阅读(184) 评论(0) 推荐(0) 编辑

设计模式15---迭代器模式
摘要:迭代器在java里面已经由很多实现,实际使用会有很多,比如list,collection的子类等等。 阅读全文

posted @ 2014-12-17 16:53 Joyfulmath 阅读(89) 评论(0) 推荐(0) 编辑

设计模式14---组合模式
摘要:组合模式可以理解为是树的结构的一种构建方式。Composite是可以拓展的树的分支,树理论上可以无限长。package com.jayfulmath.designpattern.composite;public abstract class Company { protected St... 阅读全文

posted @ 2014-12-17 16:21 Joyfulmath 阅读(154) 评论(0) 推荐(0) 编辑

设计模式13---备忘录模式
摘要:最长见于游戏状态保存,该模式不需要知道游戏具体状态,只是保存起来,等待需要的时候恢复。UML图:orininator 类是对memonto类的操作类。Memonto是状态类,记录了游戏的数据状态。CareTaker是保存memonto的类,不能修改memonto的内容!/*存取的内容,包含很多载体。... 阅读全文

posted @ 2014-12-16 10:51 Joyfulmath 阅读(211) 评论(0) 推荐(0) 编辑

设计模式12---状态机模式
摘要:状态机模式就是在需要经历一系列状态转变的时候,把每个状态都独立成一个类,而每个状态类只关心它自己和它的下一个状态。 该模式重现编写于:http://www.cnblogs.com/deman/p/5498499.html 阅读全文

posted @ 2014-12-12 17:11 Joyfulmath 阅读(540) 评论(0) 推荐(0) 编辑

设计模式总结1---模式比较
摘要:1.简单工厂模式----工厂模式-----抽象工厂模式工厂模式的特点就是把相同基类的一组类放在一起管理。2.策略模式策略模式就是对于各种策略(算法)进行提取,把各种策略都提取在Strategy接口用,而客户端只需要使用某种策略就可以了。3.装饰模式把每个特定功能放在独立的类里面,并用类包装要装饰的对... 阅读全文

posted @ 2014-12-12 11:20 Joyfulmath 阅读(298) 评论(0) 推荐(0) 编辑

设计模式11---观察者模式
摘要:观察者模式实质就是提取:提取监听对象的过程是相同的,也就是说observer类为根据不同的subject的状态做出相应的反应。package com.jayfulmath.designpattern.observer;public abstract class Observer { p... 阅读全文

posted @ 2014-12-11 17:01 Joyfulmath 阅读(189) 评论(0) 推荐(0) 编辑

设计模式10---建造者模式
摘要:设计模式就是对相同部分进行归纳,归并,不仅仅包括对象(继承,多态)也包括业务逻辑,(流程结果等),以及数据存储(使用不同数据库)。 使各个部分独立,解耦。使UI,业务逻辑,数据可以各自独立,更新等。 对建造者模式而言就是通过构建流程与具体表现的分离,抽象出构建过程。对相同或类似的构建过程进行分... 阅读全文

posted @ 2014-12-01 14:33 Joyfulmath 阅读(163) 评论(0) 推荐(0) 编辑

设计模式9---外观模式
摘要:外观模式其实是平时一直在使用的,只是很少有人意思到而已。举例:作为投资者,你有很多选择,可以是股票,房产,黄金,股票也有很多,具体选哪个,抛哪个等等问题。其实作为普通投资者,根本没有必要的知识和心里素质。而这时候,你只要选择一个基金,由基金经理代替你来管理这些投资组合。而这就是一种设计模式:clie... 阅读全文

posted @ 2014-12-01 11:29 Joyfulmath 阅读(171) 评论(0) 推荐(0) 编辑

设计模式8---模板模式
摘要:问题:有多个学生需要答题,如果用手抄的方式,题目很容易出错,而如果复印的话,大家题目都一致。业就是说:对于学生来说,除了答案不一致以为,其他都应该一致。业就是,尽可能的把相同的代码以父类的形式封装起来,而其他不同之处可以以多台的新式呈现!public abstract class AbstractT... 阅读全文

posted @ 2014-11-30 15:51 Joyfulmath 阅读(108) 评论(0) 推荐(0) 编辑

设计模式7---原型模式
摘要:原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。 Client端只需要知道接口的clone方法,而不需要具体哪些东西被clone了。ConCreatePrototype实际上对于Client端... 阅读全文

posted @ 2014-11-30 15:42 Joyfulmath 阅读(150) 评论(0) 推荐(0) 编辑

设计模式6---代理模式
摘要:代理模式的核心其实就是在 上层代码和framework层代码之间增加一个中间层。 从而对于核心代码来说,对于上层是透明的。 使用代理模式可以很好的,剪切核心代码功能,或者扩展功能已符合上层代码的使用。 已一个开关camera的例子来演示代理模式: 1.对于上层来说,并不关心camera的... 阅读全文

posted @ 2014-11-28 17:45 Joyfulmath 阅读(185) 评论(0) 推荐(0) 编辑

设计模式5---装饰模式
摘要:问题:人要穿衣服,可以穿鞋子,裤子,领带。。。,顺序可以使随机的。 也就是包含大量随机的操作,但是我们的结果却需要一个明确的顺序去执行这个方法。 UML图:该方法的变种是,可以Decorate直接继承自RealComponent。上图的方法可以通过接口来操作,符合开闭原则。这样所有实现com... 阅读全文

posted @ 2014-11-28 14:29 Joyfulmath 阅读(193) 评论(0) 推荐(0) 编辑

设计模式4---策略模式
摘要:商场中计算价格,经常为有很多促销方式。 面向对象的精髓在于抽象出相同的部分已符合人类的思维方式。 当有很多种算法可以替换(比如商品价格算法时),可以使用策略模式。 UML图: Strategy为策略基类,所有商品价格的计算都是一种算法而已。 ContextInterface用来封装具体算... 阅读全文

posted @ 2014-11-27 16:36 Joyfulmath 阅读(188) 评论(0) 推荐(0) 编辑

设计模式3---抽象工厂模式
摘要:public interface IFactory { IUser CreateUser(); IDepartment CreateDepartment();}在工厂模式中,每个工厂类会为特定的操作类型产生操作对象类。但是如果有产品系列的话,工厂模式就不太适用。考虑一个数据库的问题。1.... 阅读全文

posted @ 2014-11-27 14:08 Joyfulmath 阅读(243) 评论(0) 推荐(0) 编辑

设计模式2---工厂模式
摘要:为了解决简单工厂模式的缺点,我们通过接口IFactory抽象出工厂类,然后每次增加一个操作类,我就增加工厂类,从而达到:对扩展开放,对修改关闭。还是计算器的问题:UML如下:factory 基类:public interface IOperatorFactory { AbstractOpera... 阅读全文

posted @ 2014-11-26 15:18 Joyfulmath 阅读(209) 评论(0) 推荐(0) 编辑

设计模式1---普通工厂模式
摘要:工厂模式的精髓在于:当需要不同的条件产生具有多态性质的一组类时,可以考虑使用factory类,来生成。所以工厂模式的特征:1.需要有一个抽象的基类。2.需要用到一组子类,这些类需要相同的基类。3.需要通过一个factory类的static方法产生这一组基类。下面是一个计算器的例子:UML图如下:如上... 阅读全文

posted @ 2014-11-26 14:21 Joyfulmath 阅读(305) 评论(0) 推荐(0) 编辑

导航