
设计模式
yue2008
这个作者很懒,什么都没留下…
展开
-
设计模式应用范例(一):上行短信管理器
Spring AOP的应用:在处理业务短信之前,可以执行前置方法,在处理业务短信之后,可以执行后置方法。 策略模式的应用:不同的业务对应不同的短信格式,业务短信可以随时新增、删除,扩展性高。 模板方法模式的应用:业务短信的校验和最后处理定义成抽象方法,而且,要先通过校验后才能作最后的处理。 访问者模式的应用:每种校验规则都是对所属的短信处理器进行校验。 ...2009-03-17 18:19:20 · 231 阅读 · 0 评论 -
命令模式(Command Pattern)
命令模式本质是对命令的封装,从而把发出命令的责任和执行命令的责任分割开了,委派给不同的对象。 将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 Command模式的几个要点: 1、Command模式的根本目的在于将“行为请求者”与“行为实现者”解耦,在面向对象语言中,常见的实现手段是“将行为抽象为对象”。 ...2010-03-29 21:34:18 · 196 阅读 · 0 评论 -
解析器模式(Interpreter Pattern)
定义语言的文法,并且建立一个解释器来解释该语言中的句子。 为某种语言定义一个文法,并用该文法解释语言中的语句,当一个程序要处理许多不同,但又有些类似的问题时,用一种简单的语言描述这些问题,然后让程序解释该语言。 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。将特定领域的问题表达为某种语法规则下的句子,然后...2010-03-30 21:29:34 · 137 阅读 · 0 评论 -
解析器模式范例:阿拉伯数字金额转为中文数字金额
表达式抽象类:public abstract class Expression { protected String[] chineseFigures = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; //中文数字 public voi2010-03-31 20:27:34 · 130 阅读 · 0 评论 -
状态模式(State Pattern)
一、状态模式需要两种类型实体参与: 1、状态管理器 2、状态抽象类或接口 二、源码 1、状态抽象类public abstract class State { public abstract void turn(Context context);} 2、状态子类public class East extends Stat...原创 2010-01-11 20:29:55 · 108 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。 在迭代器模式中,具体迭代器角色和具体容器角色是耦合在一起的 —— 遍历算法是与容器的内部细节紧密相关的。为了使客户程序从与具体迭代器角色耦合的困境中脱离出来,避免具体迭代器角色的更换给客户程序带来的修改,迭代器模式抽象了具体迭代器角色,使得客户程序更具一般性和重用性。这被称为多态迭代。 迭...2010-04-01 21:36:58 · 133 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
定义一个对象封装一系列的对象交互,使得对象之间不需要显式地相互引用,从而使其耦合更加松散。并且还让我们可以独立变化多个对象相互引用。 要点: 1、将多个对象间复杂的关联关系解耦,Mediator模式将多个对象间的控制逻辑进行集中管理,变“多个对象互相关联”为“多个对象和一个中介者关联”,简化了系统的维护,抵御了可能的变化。 2、随着控制逻辑的复杂化,Mediator...2010-04-10 17:45:03 · 119 阅读 · 0 评论 -
备忘录模式(Memento Pattern)
在不破坏封装的前提下,捕获并且保持一个对象的内部状态,这样可以将对象恢复到原先保持的状态。2010-04-10 22:58:07 · 123 阅读 · 0 评论 -
建造者模式(Builder Pattern)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式将一个复杂对象的生成责任做了很好的分配,它把构造过程放到指挥者的方法中,把装配过程放到具体建造者类中。 当一个复杂对象的创建需要很多步骤的时候,这些步骤在不同的条件下是变化的,通过不同的Builder创建“不同风格”的复杂对象。 Builder模式就是把复杂对象的创建和部件的创建分别开来,...2010-01-24 22:11:46 · 122 阅读 · 0 评论 -
组合模式(Composite Pattern)
组合模式主要是应对这样的问题:一类具有“容器特征”的对象 —— 即他们在充当对象的同时,又是其他对象的容器的情况。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户对单个对象和组合对象的使用具有一致性。 想到Composite就应该想到树形结构图。 将“客户代码与复杂的对象容器结构”解耦是组合模式的核心思想,解耦之后,客户代码将与纯粹的对象接口(而非对象容器的复杂...原创 2010-01-26 22:22:32 · 121 阅读 · 0 评论 -
装饰模式(Decorator Pattern)
动态给一个对象添加一些额外的职责。使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。 通过采用组合、而非继承,Decorator模式实现了在运行时动态的扩展对象功能的能力,而且可以根据需要扩展多个功能。避免了单独使用继承带来的灵活性差和多子类衍生问题。 Component类在Decorator模式中充当抽象接口的角色,不应该去实现具体的行为。而且Decorat...2010-01-28 23:50:38 · 102 阅读 · 0 评论 -
责任链模式(Chain of Responsibility Pattern)
责任链是用一系列类试图处理一个请求,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递请求。也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样像一个链条一样传递下去。 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 应用情景: ...2010-03-28 11:28:41 · 113 阅读 · 0 评论 -
代理模式(Proxy Pattern)
为其他对象提供一种代理以控制对这个对象的访问。 在某些情况下,客户不想或者不能直接引用一个对象,这个时候就用到了代理类,代理对象可以在客户和目标对象之间起到中介的作用,客户端分辨不出代理对象与真实对象的区别。 Proxy模式的要点: 1、“增加一层间接层”是软件系统中对许多负责问题的一种常见解决方法。在面向对象系统中,直接使用某些对象会带来很多问题,作为间接层的proxy...2010-03-26 22:27:55 · 118 阅读 · 0 评论 -
策略模式(Strategy Pattern)
策略模式的本质:少用继承,多用组合。 策略模式属于对象的行为模式。处理多于一个算法的时候,把算法和使用算法的客户端分开(把行为和环境分开),从而方便的选择其中一个算法。 针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 ...2009-03-18 15:21:00 · 107 阅读 · 0 评论 -
访问者模式(Visitor Pattern)
一、概念 访问者模式,就可以在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。 作用于某个对象群中各个对象的操作。它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作。 对象群中的对象类型应该很少改变,而访问者的子类可以有很多种。 结合reflect反射机制,可以使得访问者模式适用范围更...原创 2009-03-23 16:21:37 · 127 阅读 · 0 评论 -
观察者模式(Observer Pattern)
一、概念 定义对象间的一种一对多依赖关系,使得每当一个对象改变状态,则其相关依赖对象皆得到通知并被自动更新。 二、UML类图 三、类源码 1、类Human的源码public class Human implements Observer { private String username = ""; public String getUsername() ...2009-03-26 17:58:44 · 132 阅读 · 0 评论 -
单例模式(Singleton Pattern)
一、单例模式的要点有三个: 1、某个类只能有一个实例。 2、必须自行创建这个实例。 3、必须自行向整个系统提供这个实例。 二、应用情景: 1、系统只需要一个实例的对象。 2、客户调用类的单个实例只允许使用一个公共访问点。 三、范例public class Singleton { private static ...原创 2008-09-19 21:14:50 · 126 阅读 · 0 评论 -
简单工厂模式(Simple Factory Pattern)
一、定义 专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常它根据自变量的不同返回不同的类的实例。 简单工厂模式的实质是由一个工厂类根据传入的参量,动态决定应该创建出哪一个类的实例。简单工厂模式实际上不属于23个GoF模式,但它可以作为GoF的...原创 2008-09-19 22:52:21 · 116 阅读 · 0 评论 -
工厂方法模式(Factory Method Pattern)
一、定义 工厂方法模式又称工厂模式,也叫虚拟构造器模式或者多态工厂模式。 在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化哪一个类。 在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节。 工厂方法模式的...原创 2008-09-23 21:24:16 · 146 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
将一个接口转换成为客户想要的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。 客户需要的功能在系统中已经存在,但是现有接口与客户期望的不一致,这个时候,我们就可以应用适配器模式向客户提供统一的接口,以满足客户的期望。 应用情景: 1、对象需要利用现存的并且接口不兼容的类。 2、你需要创建可重用的类以协作其他接口不一定兼容的类。 3、你需要...2009-04-10 13:08:23 · 102 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
将抽象部分与实现部分分离,使得它们两部分可以独立地变化。 抽象部分和行为部分相分离。 使用Bridge模式的一个动机应该是:对象拥有多个属性和行为,在不同的时刻由不同的属性和行为组合可以表现出不同的外部特征。 如果将属性、行为分开,采用动态组合的方式,在运行时动态决定需要将哪些属性和哪些行为搭配,除了可以减少子类的数量之外,还增强了未来的扩展性。 应用情景:...原创 2009-05-05 09:29:32 · 142 阅读 · 0 评论 -
外观模式(Facade Pattern)
外观模式,为子系统的一组接口提供一个统一的界面,此模式定义了一个高层接口,这一个高层接口使得子系统更加容易使用。 外观是一个能为子系统和客户提供简单接口的类。当正确的应用外观,客户不再直接和子系统中的类交互,而是与外观交互。外观承担与子系统中类交互的责任。 外观模式的几个要点: 1、从客户程序的角度看,外观模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来...2010-03-25 22:39:04 · 104 阅读 · 0 评论 -
轻量级模式(Flyweight Pattern)
轻量级模式实现对象的共享,从而减少内存分配的开销。该模式通常和工厂模式一起使用。 Flyweight的目的是为了减少内存的消耗而出现的一种模式。因此他是一种解决实现问题的模式,而不是用来解决建模问题的。 Flyweight享元设计模式是一种结构型设计模式,它主要解决的问题是:由于(同类)对象的数量太大,采用面向对象时给系统带来了难以承受的内存开销。 Flyweight模式...2010-03-25 23:47:47 · 302 阅读 · 0 评论 -
设计模式概述
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、使软件更容易修改和维护。 设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。 设计模式是对面向对象设计中反复出现的...原创 2015-10-11 00:17:45 · 123 阅读 · 0 评论