摘要:
抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。UML图:IFactory:package com.cnblog.clarck;public interface IFactory { IUser createUser(); IDepartment createDepartment();}SqlserverFactory:package com.cnblog.clarck;public class SqlserverFactory implements IFactory { @Override p... 阅读全文
随笔分类 - 设计模式学习系列
设计模式——观察者模式(ObserverPattern)
2013-11-30 17:13 by 雪夜&流星, 233 阅读, 收藏, 编辑
摘要:
观察者模式(ObserverPattern):观察者模式又称发布-订阅(Publish/Subscribe)模式,定义了一个中一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。UML图:Subject:package com.cnblog.clarck;import java.util.ArrayList;import java.util.List;/** * 主题/抽象通知者 * * @author clarck * */public class Subject { private List obs... 阅读全文
设计模式——建造者模式(BuilderPattern)
2013-11-30 17:04 by 雪夜&流星, 207 阅读, 收藏, 编辑
摘要:
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。UML图:Builder:package com.cnblog.clarck;/** * 抽象建造者,确定产品有两个部分A和B组成,并声明一个得到产品组合后得到结果的方法getResult. * * @author clarck * */public abstract class Builder { public abstract void buildPartA(); public abstract void buildPartB(); public abstract ... 阅读全文
设计模式——外观模式(FacadePattern)
2013-11-08 00:45 by 雪夜&流星, 181 阅读, 收藏, 编辑
摘要:
外观模式:为子系统中的一组接口提供一个一致的界面,次模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。UML图:外观类:package com.cnblog.clarck;/** * 外观类 知道哪些子系统负责处理请求,将客户的请求代理给适当的子系统对象 * * @author clarck * */public class Facede { private SubSystemOne one; private SubSystemTwo two; private SubSystemThree three; private SubSystemFour four... 阅读全文
设计模式——模板方法模式(TemplateMethod Pattern)
2013-11-08 00:39 by 雪夜&流星, 230 阅读, 收藏, 编辑
摘要:
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。UML图: 抽象模板:package com.cnblogs.clarck;/** * 抽象模板,并实现了一个模板方法。 * * @author clarck * */public abstract class AbstractClass { public abstract void primitiveOperation1(); public abstract void primitiveOperation2(); /** ... 阅读全文
设计模式——原型模式(Prototype Pattern)
2013-10-27 20:07 by 雪夜&流星, 201 阅读, 收藏, 编辑
摘要:
原型模式:用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。 UML 图: 原型类:package com.cnblog.clarck;/** * 原型类 * * @author clarck * */public abstract class Prototype { private String mID; public Prototype(String id) { mID = id; } public String getID() { return mID; } public abstract Prot... 阅读全文
设计模式——工厂模式(Factory Method)
2013-10-27 20:00 by 雪夜&流星, 197 阅读, 收藏, 编辑
摘要:
工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。UML图: 运算基类: package com.cnblog.clarck;/** * 数据运算基类 * * @author clarck * */public class Operation { private double mNmberA = 0; private double mNumberB = 0; public double getNumberA() { return mNmberA; } public void setNm... 阅读全文
设计模式——代理模式(Proxy Pattern)
2013-10-24 02:07 by 雪夜&流星, 444 阅读, 收藏, 编辑
摘要:
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 UML图: 模型设计: Subject类:package com.cnblog.clarck;/** * Subject 类,定义了RealSubject和Proxy的共用接口, 这样就在任何使用RealSubject的地饭都可以使用Proxy * * @author clarck * */public abstract class Subject { public abstract void request();} RealSubject类:package com.cnblog.cla... 阅读全文
设计模式——装饰模式(Decorator Pattern)
2013-10-24 01:56 by 雪夜&流星, 216 阅读, 收藏, 编辑
摘要:
装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 UML图: 模型类: Component类:package com.cnblog.clarck;/** * 接口对象,可以动态的给对象添加职责 * * @author clarck * */public abstract class Component { public abstract void Operation();}ConcreateComponent类:package com.cnblog.clarck;/** * 具体的装饰对象,起到给Component添加职责 * ... 阅读全文
设计模式——策略模式(Strategy Pattern)
2013-10-22 00:19 by 雪夜&流星, 287 阅读, 收藏, 编辑
摘要:
写在前面: 直接将书中的例子用来作为记录自己学习的成果,不知道这样好不好,如果给原作者带来什么不利的影响不妨告知一声,我及时删掉。 UML图: 抽象策略:Strategy package com.cnblog.clarck;/** * 抽象策略 * * @author clarck * */public abstract class Strategy { /** * 抽象的算法方法 */ public abstract void algorithmInterface();} 具体算法A:ConcreateStrategyApackage c... 阅读全文
设计模式——简单工厂模式(SimpleFactory Pattern)
2013-10-21 23:59 by 雪夜&流星, 262 阅读, 收藏, 编辑
摘要:
最近做项目总是遇到这样或者那样的问题,代码不够简洁,代码可扩展性不够好,耦合度又太高了,导致经常有种想去重构又无从下手的感觉。无意间翻出了之前买的一本书《大话设计模式》读了一遍,受益匪浅,决定将其中的代码用java来实现一遍,个中精髓自行体会,此处只做代码的具体实现。^-^ UML图: 模型: 产品基类:Product package com.cnblog.clarck;/** * 产品类 * * @author clarck * */public class Product { /** * 创建产品 * * @return */ ... 阅读全文
设计模式——命令模式(Command)
2011-09-25 00:11 by 雪夜&流星, 313 阅读, 收藏, 编辑
摘要:
最近做项目用到了命令模式,自己却浑然不知。项目中是这样的,同一个按钮,在不同的界面中点击的时候要实现不同的方法。于是只需要在不同的界面传递不同的命令就行了。后来仔细去看了下命令模式,然后记录下来了。命令模式(Command),将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。用遥控器来控制空调的开和关、以及温度的设置。空调的实体类(包含空调的开、关和温度的设置)package com.tanlon.command;/** * 定义空调,用于测试给遥控器添新控制类型 * @author Administrator * */publ. 阅读全文
设计模式——单例模式(Singleton)
2011-09-24 23:47 by 雪夜&流星, 289 阅读, 收藏, 编辑
摘要:
最近做项目的时候遇到一个问题,就是一个设置界面设置某一个属性的时候我们在整个应用程序中只能有一个设置界面的实例存在。于是就去学习了一下单例模式,然后将其记录下来了。简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。特别注意:一、单例模式是用来实现在整个程序中只有一个实例的。二、单例类的构造函数必须为私有,同时单例类必须提供一个全局访问点。三、懒汉式和饿汉式单例类。在Java中,单例模式(饿汉模式)应用的例子如下述代碼所示: public class Singleton { private static... 阅读全文