23中设计模式
漂流幻境
全力以赴
展开
-
创建型模式-----单例模式(Singleton)
1、单例模式 保证一个类仅有一个实例,并提供一个访问他的全局访问点。(俗称:构造方法的私有化) 如交易所的核心交易引擎类,控制着交易流程,如果可以创建多个的话,交易流程无法得到保障。 实例一: public class Singleton { private static Singleton instance = null;原创 2013-08-30 11:52:16 · 1027 阅读 · 3 评论 -
结构型模式-----代理模式(Proxy)
1、代理模式 为其他对象提供一种代理以控制对这个对象的访问。 静态代理:(类似于装饰模式),在代理真实对象进行操作时,可以在操作之前与之后添加额外的操作。 实例一: public interface Sender { public void send();}public class MailSender imp原创 2013-09-02 13:36:31 · 849 阅读 · 0 评论 -
结构型模式-----外观模式(Facade)
1、外观模式 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层次接口,这个接口使得这一子系统更加容易使用。 适用性: 当你要为一个复杂子系统提供一个简单接口时,子系统往往因为不断演化而变得越来越复杂,大多数模式使用时都会产生更多更小的类, 这使得子系统更具有可重用性,也更容易对子系统进行原创 2013-09-02 14:39:35 · 804 阅读 · 0 评论 -
行为型模式-----状态模式(State)
1、状态模式 当对象的状态改变时,同时改变其行为。 如:QQ有几种在线状态,在线、隐身、忙碌等,每一个状态对应不同的操作,而且你的好友也能看到你的状态。 因此状态模式的核心思想:1:可以通过改变状态来获取不同的行为;2:你的好友能够同时看到你的变化; 适用性: 一个对象的行为取决于他原创 2013-09-03 16:54:07 · 786 阅读 · 0 评论 -
行为型模式-----观察者模式(Observer)
1、观察者模式 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于他的对象都得到通知并被自动更新。 涉及到的都是类与类之间的关系,不涉及到继承, 实例一//观察的主体public interface Subject { public void add(Observer observer)原创 2013-09-03 10:03:14 · 787 阅读 · 0 评论 -
行为型模式-----备忘录模式(Memento)
1、备忘录模式 (类似于数据的备份-恢复) 目的是:保存一个独享的某个状态,以便在适当的时候恢复对象。 如:假设有原始类A,A中有很多属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态。 而类C就是一个用来存储备忘录的,且只能对其存储,而不能进行修改操作。原创 2013-09-03 13:19:25 · 742 阅读 · 0 评论 -
行为型模式-----迭代器模式(Iterator)
1、迭代器模式 提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。 一是需要遍历的对象,即聚集对象;二是迭代器对象,用于对聚集对象进行遍历访问; 实例一 // 定义集合接口public interface Collection { public Iterator ite原创 2013-09-03 10:32:45 · 772 阅读 · 0 评论 -
行为型模式-----责任链模式(chain of responsibility)
1、责任链模式 有多个对象,每个对象持有下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求,但是发出请求者 并不清楚到底最终是哪个对象会处理请求,所以,责任链可以实现,在隐藏客户端的情况下,对系统进行动态的调整。 (有多个对象可以处理一个请求,原创 2013-09-03 11:11:04 · 1045 阅读 · 0 评论 -
行为型模式-----命令模式(Command)
1、命令模式 目的是达到命令的发出者和执行者之间的解耦,实现请求和执行的分开。 如:司令员下令让士兵做事。从整个事情的角度来考虑,司令员的作用是:发出口令。 然后口令经过传递到达士兵耳朵里。最后士兵对命令进行执行。 这个过程的司令员、命令、士兵三原创 2013-09-03 11:35:46 · 901 阅读 · 0 评论 -
行为型模式-----解释器(Interpreter)
1、解释器模式 给定一个语言,定义他的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的字句。 Context类是一个上下文环境类,Plus和Minus分别用来计算的实现。 实例一: public class Context { private int num1; privat原创 2013-09-04 13:28:01 · 875 阅读 · 0 评论 -
行为型模式-----访问者模式(Visitor)
1、访问者模式 (通过中间类来实现) 目的是:把数据结构和作用于结构上的操作解耦,使得操作集合可相对于自由的演化。 他使用于数据结构相对稳定算法由容易变化的系统。 该模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其他的修改的效果。原创 2013-09-04 14:05:28 · 982 阅读 · 0 评论 -
23中设计模式总序(一)
1、23中设计模式总体可以分为三类: A):创建型模式: 单例模式:Singleton 原型模式:Prototype 建造者模式: Builder 简单工厂模式:Simple Factory 抽象工厂模式:Abstract原创 2013-08-30 10:52:59 · 807 阅读 · 0 评论 -
结构型模式-----组合模式(Composite)
1、组合模式 (树型结构 : 自身一对多) 将对象组合成树形结构以表示“部分--整体”的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。 实例一 public class TreeNode { private String name; private TreeNode p原创 2013-09-02 16:13:56 · 708 阅读 · 0 评论 -
创建型模式-----原型模式(Prototype)
1、原型模式(Prototype) 就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象, 在java中,复制对象是通过clone()实现的,很简单,一个原型类,只需要实现Cloneable接口, 覆写clone方法,此处clone方法名称可以改成任意的名称,因为Cloneable接口是个空接口,原创 2013-08-30 14:08:13 · 818 阅读 · 0 评论 -
创建型模式-----建造者模式(Builder)
1、建造者模式: 工厂类模式提供的是创建单个类实例的模式,而建造者模式则是将 各种产品集中起来进行管理,用来创建复合对象。(所谓复合对象: 就是指某个类具有不同个的属性。)该模式的意图是:将一个复杂 对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。 实例原创 2013-08-30 15:22:10 · 763 阅读 · 0 评论 -
创建型模式-----简单工厂模式
1、简单工厂模式(工厂方法模式) 建立一个工厂类,对实现了同一接口的一些类进行实例的创建。 实例一: public interface Sender { public void send();}public class MailSender implements Sender { @Override public void send() { S原创 2013-08-30 15:43:14 · 632 阅读 · 0 评论 -
结构性模式-----适配器模式(Adapter)
1、适配器模式(类适配器、对象适配器):Adapter Class/Object 将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要分三类:类的适配器模式、对象的适配器模式、接口的适配器模式。原创 2013-08-30 17:29:21 · 732 阅读 · 0 评论 -
创建型模式----抽象工厂模式
1、抽象工厂模式 简单工厂模式存在的问题: 类实例的创建依赖工厂类,也就是说,如果想拓展程序,必须对工厂类进行修改,这违背了闭包原则。 那如何解决呢?? 通过抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。原创 2013-08-30 16:10:08 · 748 阅读 · 0 评论 -
结构型模式-----装饰模式(decorator)
1、装饰模式 动态的给一个对象添加一些额外的职责,就增加功能来说Decorator模式相比生成子类更为灵活。 要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。 实例一: public interface Source { public void method();}public clas原创 2013-09-02 09:59:45 · 827 阅读 · 0 评论 -
结构型模式-----享元模式(Flyweight)
1、享元模式 运用共享技术有效的知识大量细粒度的对象。 他的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销。通常与工厂模式一起使用。 FlyweightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有复合条件的对象,如果有,就返回已经存在的对象,如果没有原创 2013-09-02 16:45:30 · 724 阅读 · 0 评论 -
行为型模式-----策略模式(Strategy)
1、策略模式 ---其功能有点类似于方法的重载 定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换,本模式使得算法可独立于使用他的客户而变化。 实例一 public interface CountryTax { public float taxValue(float old);}public class Chin原创 2013-09-02 17:09:38 · 869 阅读 · 0 评论 -
行为型模式-----模板方法模式(Template Method)
1、模板方法模式 ---(类似于多态) 定义一个操作中的算法的骨架,而将一些株洲延迟到子类中。 他使得子类可以不改变一个算法的结构既可以冲定义该算法的某些特定步骤。 一次性实现一个算法的不变的部分,并加可变的行为留给子类来实现。 实例一 public abst原创 2013-09-02 17:45:04 · 658 阅读 · 0 评论 -
结构型模式-----桥接模式(Bridge)
1、桥接模式 将抽象部分与他的实现部分分离,使他们都可以独立的变化。 像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本上不需要改动太多的代码, 原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就原创 2013-09-02 15:29:42 · 735 阅读 · 0 评论 -
行为型模式-----中介者模式(Mediator)
1、中介者模式 用来降低类类之间的耦合,因为如果类类之间有依赖关系的话,不利于功能的扩展和维护,因为只要修改一个对象,其他的关联的对象都得进行修改。 如果使用中介者模式,只需要关心和Medialtor类的关系,具体的类类之间的关系及调度交给Mediator就行。 如图:User类统一接口,User1和User2分别是不同原创 2013-09-04 11:33:14 · 871 阅读 · 0 评论