设计模式
文章平均质量分 65
rob007008
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
组合模式Composite Pattern
定义(GoF《设计模式》):将对象组合成树形结构一表示“部分整体”的层次结构,使的用户对单个对象和使用具有一致性。 组合模式:使用我在处理树形结构中的复杂等级机构时非常有用,它可以使得客户端处理复杂对象就想处理简单对象一样,从而使得客户端与复杂对象之间解耦。 比如:递归数据结构、分级数据结构、树形结构。 例:树形菜单,文件系统。 想到组合模式的实现我就想到了传销,中国大多数直销...原创 2013-11-06 18:38:42 · 102 阅读 · 0 评论 -
访问者模式(Visitor)
GOF定义:表示一个作用于某对象结构中的各元素的操作用,它是你可以在不改变各元素的前提下定义作用于这些元素的新操作。 访问者模式是21中设计模式中最难理解的一个设计模式。 角色分析: 抽象访问者: 抽象类或者接口,声明访问者可以访问哪些元素,具体的程序中就是visit方法中的参数定义。 访问者: 实现抽象访问者所声明的方法,...原创 2014-02-10 17:08:53 · 141 阅读 · 0 评论 -
责任链模式(Chain of Responsibility Method)
使多个对象有机会出来请求,从而避免请求者和请求处理者之间的耦合,将这些处理请求的对象链成一个串,将请求一直往下抛,直到有处理者处理请求。 纯责任链模式: 每一个处理请求对象,要么完全不处理请求直接往下抛,要处理完整的请求并返回。 复杂责任链模式: 每一个请求者对象可以处理请求的一部分,然后再向下抛出,直到有处理者处理完毕。 一、使用场景 1、有多个对象可以...原创 2014-02-11 19:19:57 · 136 阅读 · 0 评论 -
单例模式
单例模式是设计模式中常用的一种模式,解释为:一个类仅有一个实例。单列模式分为两种:1、饿汉式 2、懒汉式 一、饿汉式 :第一次class加载时,对象就创建。 public class Singleton(){ //私有构造,外部不能直接new该对象 private Singleton(){} //调用私有方法,内部构建对象 private static S...原创 2013-10-19 12:03:06 · 93 阅读 · 0 评论 -
建造模式
建造模式:就是把复杂的创建过程封装在内部,对外部来说只需要传入建造者和建造工具,不需要关心内部的具体实现。 示例: 假如我们要生产一台笔记本,笔记本由A、B、C三部分组成,这时我们可以A\B\C三部分的生产看成为一个建造工具,然后再由一个工人(建造者)将三部分组装起来。 第一部分:BuildTool(建造工具)接口 public interface BuildTool(...原创 2013-10-19 18:19:45 · 144 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口转化成客户需要的另外一个接口,Adapter模式原本为那些接口不兼容而不能一起工作的接口设计。 设配器模式分为:示例: 一、类适配器 :通过继承实现 public interface IMailer{ void sendMail(); } public class OuterMailer{ void sendMail(); }...原创 2013-10-20 12:02:09 · 114 阅读 · 0 评论 -
原型模式Prototype
原型模式:也是一种创建型模式,它关注的是系统中需要创建大量对象,但对象之间有很多相似之处或者对象基本相同。 原型模式有两种不同的实现:1、简单形式 2、登记形式一、简单形式 public interface Prototype{ public Object clone(); } public class P1 implements Prototype{ ...原创 2013-10-27 19:39:46 · 92 阅读 · 0 评论 -
工厂模式
工厂模式:客户端不需要知道具体的实现,客户端只需要面向接口编程就行,这样是客户端从具体的实现中解耦和。分为简单工厂模式、工厂方法模式、抽象工厂模式 一、抽象工厂模式 网上的一个例子:一个客户告诉装机员他需要装一台什么样的电脑。 //抽象一个工厂 public interface AbstractFactory{ //生产方法 相当一条工厂的生产线 ...原创 2013-10-28 18:09:04 · 102 阅读 · 0 评论 -
外观模式Facade
外观模式(Facade):又称门面模式,是给子系统或客户端一个一致的界面,从面定义一个高层的接口,这个接口使得子系统或客户端更加容易使用。从而降低了子系统或客户端调用不同接口带来的复杂性。 如图: 未使用外观模式: 网上一例:简单意思是打开第一个抽屉取得第二个抽屉的钥匙,然后打开第二个抽屉取得文件。 实现: public class DrawOne{ ...原创 2013-10-31 15:01:50 · 105 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
中介者模式又称调停者模式,属行为模式。 用一个中介者来封装多个对象之间负责的交互行为,中介者对象使各交互对象之间不需显示的声明相互引用,从而使对象之间松耦合,而且可以独立的改变他们之间的交互行为。 角色分析: Mediator(抽象中介者): 定义同事类之间的通讯接口。 ConcreteMediator(具体中介者): ...原创 2014-02-10 11:57:13 · 162 阅读 · 0 评论 -
Observer观察者模式
观察者模式:定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所以依赖于他的对象都得到通知并更新。 角色分析: 抽象目标角色(Subject): 目标角色提供观察者注册、删除接口,并发出通知。 抽象观察者角色(IObserver): 当目标角色发生改变时,获得通知的对象的一个更新接口。 实现: package obs...原创 2014-02-08 15:49:53 · 104 阅读 · 0 评论 -
备忘录模式(Memento)
定义:在不破坏对象封装的前提下,捕获对象内部的状态,并在该对象之外保存这个状态,以便后面恢复,这个重点是在对象之外保存这个状态。 网上的一个例子: package memento; /** *create by datao.wang 2014-2-8-上午11:16:50 */ public class Client { public static void ...原创 2014-02-08 11:23:46 · 100 阅读 · 0 评论 -
装饰模式Decorator
装饰模式又名包装(Wrapper)模式,装饰模式以客户端透明的方式扩展对象的功能,是继承关系的一种代替方案。 装饰模式其实我们在使用java I/O的时候就已经使用过例如: //写法一: FileInputStream fis=new FileInputStream(file); BufferedInputStream bis=new BufferedInputStream(fi...原创 2013-11-10 18:31:15 · 93 阅读 · 0 评论 -
代理模式
GOF定义:为其他对象提供一种代理以控制该对象的访问。 代理模式是一种非常有用的模式,它存在的变种模式比较多。比如:远程代理、虚拟代理、保护代理、智能引用、动态代理等等。 package proxy; /** *create by datao.wang 2014-3-1-下午2:56:30 */ public interface Subject { //被...原创 2013-11-13 17:47:37 · 107 阅读 · 0 评论 -
享元模式
享元模式:用共享的技术有效地支持大量的细粒度对象。享元模式在一般的项目开发中并不常用,而系统底层开发中会用到,常常为了提升系统的性能而使用该模式。比如:java中的String类就使用了该模式。 main(){ String a="abc"; String b="abc"; System...原创 2013-11-20 17:47:13 · 139 阅读 · 0 评论 -
命令模式
命令模式是行为模式的一种。行为模式就是关注对象的行为和责任。区别了建造模式、创建模式。 命令模式把一个请求或操作封装在一个对象中,把发出命令的责任和执行命令的责任,委派给不同的对象。 回调就是命令模式的一种..... 例:监听器 main(){ Botton b=new Buttton(); b.addListener(new XXListener()...原创 2013-12-05 11:37:18 · 101 阅读 · 0 评论 -
解释器Interpreter
所谓解释器模式就是定义一个语言的文法,并建立一个解释器来解释该语言中的句子! 比如:taglib标签,正则表达式都是采用的解释器。 解释器不仅仅只定义一种语法语义,更可以使用一个抽象语法树定义一个语言实例。 解释器角色: AbstractExpression: 抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。 TerminalExpressi...原创 2014-01-27 15:57:03 · 103 阅读 · 0 评论 -
状态模式
GoF给出的定义做个通俗的解释就是:一个对象在不同的状态下有不同的行为,也可以说对象的每个状态有着不同的行为。 状态模式所涉及到的角色有: ● 环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。 ● 抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个...原创 2014-01-27 17:46:05 · 87 阅读 · 0 评论 -
策略模式Strategy
策略模式和状态模式比较类似。 状态模式是以状态驱动行为的模式,而策略模式则以算法驱动行为的模式,某个类存在着不同的状态且不同状态类的行为不同,则选择状态模式,如某个类的行为有几种不同的实现方式,则选择策略模式。 GOF定义:定义一族算法,将每个算法分别封装起来,并且相互之间可以替换。策略模式可以使不同算法之间的替换独立于使用算法的客户。策略模式是非常常用的模式。 角色分析: Con...原创 2014-02-07 17:28:05 · 114 阅读 · 0 评论 -
模板方法模式(Template Method Pattern)
Template Method Pattern属于行为模式。 GOF定义:定义一个操作中算法骨架,将一个些算法操作延迟到子类中去实现,模板方法使得子类能够改变算法结构或者重新定义算法实现。 角色分析:结构非常简单 AbstractClass(抽象类): 在抽象类中定义一系列的基本操作,者写基本操作可以具体的实现也可以是抽象的。 ConcreteClass(实现...原创 2014-02-08 10:43:40 · 158 阅读 · 0 评论 -
桥梁模式Bridge
桥梁模式:又称柄体模式【GOF95】桥梁模式的用意是"将抽象化 (Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。 关键词: 抽象化、实现化、脱耦 脱耦: 所谓耦合就是两个实体之间存在某种强关系,比如说java中的继承。所谓脱耦就是将两个实体之间存在的这种强关系去掉,或者将两者之间的关系改为弱关系。 java类之间的关系分...原创 2013-11-02 17:10:48 · 152 阅读 · 0 评论
分享