
设计模式
土戈
软件开发
展开
-
设计模式比较
代理模式--装饰模式代理模式和装饰模式非常类似,甚至代码都类似。二者最主要的区别是:代理模式中,代理类对被代理的对象有控制权,决定其执行或者不执行。而装饰模式中,装饰类对代理对象没有控制权,只能为其增加一层装饰,以加强被装饰对象的功能,仅此而已。装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)可以对它的...原创 2019-02-04 18:14:21 · 280 阅读 · 0 评论 -
访问者模式(Visitor)--中介者模式(Mediator)--解释器模式(Interpreter)
21、访问者模式(Visitor)访问者模式:把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。访问者模式使得增加算法操作变得容易。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。其缺点就是增加新的数据结构很困难。public interface Visitor { public v...转载 2019-02-04 10:17:37 · 410 阅读 · 0 评论 -
备忘录模式(Memento)--状态模式(State)
19、备忘录模式(Memento)主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。Original类是原始类,里面有需要保存的属性value及创建一个备忘录类,用来保存value值。Memento类是备忘录类,Stor...转载 2019-02-04 10:17:28 · 241 阅读 · 0 评论 -
责任链模式(Chain of Responsibility)--命令模式(Command)
17、责任链模式(Chain of Responsibility)有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。MyHandle类是核心,实例化后生成一系列相互持有的对象,构成一条链。public interface Handler { public void operator(); } p...转载 2019-02-04 10:17:21 · 532 阅读 · 0 评论 -
观察者模式(Observer)--迭代器模式(Iterator)
15、观察者模式(Observer)包括这个模式在内的接下来的四个模式,都是类和类之间的关系,不涉及到继承。当你订阅了该文章,如果后续有更新,会及时通知你。对象之间是一种一对多的关系。MySubject类就是被观察者。public interface Observer { public void update(); } public class Obs...转载 2019-02-03 15:21:25 · 438 阅读 · 0 评论 -
策略模式(strategy)--模板方法模式(Template Method)
13、策略模式(strategy)策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下:图中ICalculator提供统一的方法,AbstractCalculator是辅助类,提供辅助方法,pub...转载 2019-02-03 15:01:27 · 2389 阅读 · 0 评论 -
享元模式(Flyweight)
12、享元模式(Flyweight)享元模式的主要目的是实现对象的共享,即共享池,通常与工厂模式一起使用。FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象。public class ConnectionPool { private Ve...转载 2019-02-03 14:51:38 · 108 阅读 · 0 评论 -
桥接模式(Bridge)--组合模式(Composite)
10、桥接模式(Bridge)桥接的用意是:将抽象与实现解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。两个变化因素:品牌,电脑类型核心要点:处理多层继承结构...转载 2019-02-03 14:35:20 · 2903 阅读 · 0 评论 -
装饰模式(Decorator)--代理模式(Proxy)--外观模式(Facade)
7、装饰模式(Decorator)装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例:public interface Sourceable { public void method(); } public class Source implements Sourceable { ...转载 2019-02-03 13:10:40 · 519 阅读 · 0 评论 -
适配器模式(Adapter)
适配器模式(Adapter)适配器模式将某个类的接口转换成期望的另一个接口。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。01、类的适配器模式核心思想就是:通过Adapter类,将Source的功能扩展到Targetable里,看代码:public class Source { public void method1() { ...转载 2019-02-03 12:44:19 · 151 阅读 · 0 评论 -
建造者模式(Builder)--原型模式(Prototype)
建造者模式(Builder)工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。 建造者模式:将复杂对象的构建、表示分离,使得同样的构建过程可以创建不同的表示。 主要解决:一个复杂对象的创建工作,由各个部分的子对象用一定的算法构成;由于需求变化,这个复杂对象的各个部分经常...转载 2019-02-03 12:33:58 · 293 阅读 · 0 评论 -
单例模式(Singleton)
有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。单例大约有两种实现方法:懒汉与饿汉。 懒汉:在第一次用到类实例的时候才会去实例化; 饿汉:在单例类定义的时候就进行实例化。 特点与选择: 由于要进行线程同步,所以在访问量比较大,或者可能访问的线程比较多时,采用饿汉实现,可以实现更好的性能。 在访问量较小时,采用懒汉实现。...转载 2019-02-03 12:14:09 · 223 阅读 · 1 评论 -
简单工厂模式--工厂方法模式--抽象工厂模式
首先,简单工厂模式不属于23中涉及模式,简单工厂一般分为:普通简单工厂、多方法简单工厂、静态方法简单工厂。0、简单工厂模式简单工厂模式模式分为三种:01、普通就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。 举一个发送邮件和短信的例子首先,创建二者的共同接口:public interface Sender { public void S...转载 2019-02-03 12:13:06 · 205 阅读 · 0 评论 -
设计模式概述
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。第一类...转载 2019-02-03 11:13:45 · 153 阅读 · 0 评论