
Design Patterns
ldaolong
这个作者很懒,什么都没留下…
展开
-
设计模式的六大原则(转)
1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换...原创 2014-09-06 22:26:07 · 87 阅读 · 0 评论 -
责任连模式(Chain of Responsibility)
一、核心思想在责任链模式里,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。关系图: Codes: public interface Handler { pu...原创 2014-10-15 08:42:17 · 112 阅读 · 0 评论 -
命令模式(Command)
一、核心思想命令模式是一个对象行为模式。主要解决在软件构件过程中行为发起者和行为构建者之间的紧耦合的问题。将一个发起者请求封装成一个对象,将发起者和执行者分开,通过命令的方式来实现。包含三个类:请求发起者Invoker:请求执行者Receiver:命令MyCommand:关系图:todo codes: public interface...原创 2014-10-15 08:58:48 · 87 阅读 · 0 评论 -
备忘录模式(Memento)
一、核心思想主要目的是存储一个对象的快照,即在不破环封装的前提下,捕捉一个对象的内在状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。包含的角色有:备忘录类 Memento原始类 ClassA备忘录存储类 ClassB 关系图如下: codes: public class Original { ...原创 2014-10-16 09:37:16 · 92 阅读 · 0 评论 -
状态模式(State)
一、核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态。所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。 2、你的好友能同时看到你的变化。在状态模式中,需2个对象:状态类St...原创 2014-10-16 09:47:50 · 81 阅读 · 0 评论 -
访问者模式(Visitor)
一、核心思想 操作改变,数据结构不变。访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可以为一个已存在的类或类群增加新的操作而无需做其它的修改的效果。组成结构:访问者接口Visitor:访问者实现类MyVisitor:被访问者接口:Subject:被访问者实现类MySubject: 简单关系图:来看看原码:一个Visitor类,存放要...原创 2014-10-20 08:41:55 · 138 阅读 · 0 评论 -
中介者模式(Mediator)
一、核心思想用一个中介对象来封装一系列关于对象交互行为。中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。关系图:User类统一接口,User...原创 2014-10-21 14:15:02 · 123 阅读 · 0 评论 -
解释器模式(Interpreter)
一、核心思想是一个特殊的设计模式。它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法。简单的说就是一种简单的语法解释器架构。包括三个类:上下文环境类Context:解释器接口Expression:解释器具体实现类: Context类是一个上下文环境类,Plus和Minus分别是用来计算的实现 Codes: p...原创 2014-10-21 14:24:55 · 96 阅读 · 0 评论 -
单例模式
一. 什么是单例模式 确保一个类只有一个实例, 并提供一个全局的访问点 二. 单例模式的特点 1. 单例模式只能有一个实例。 2. 单例类必须创建自己的唯一实例。 3. 单例类必须向其他对象提供这一实例。 三, VS 静态类 1. 单例可以继承和被继承,方法可以被override,而静态方法不可以。 2. 静态方法中产生的对象会在执行...原创 2018-01-25 15:04:42 · 114 阅读 · 0 评论 -
迭代子模式(Iterator)
一、核心思想迭代子模式又称Cursor模式,是对象的行为模式。迭代子模式可以顺序地访问聚集中的对象而不必显露聚集的内部对象。包含:聚集对象 和 迭代器对象。 关系图: 代码:两个接口: public interface Collection { public Iterator iterator(); ...原创 2014-10-14 17:19:16 · 91 阅读 · 0 评论 -
观察者模式(Observer)
一、核心思想又名‘发布--订阅(publish/subscribe)’模式,定义对象间的一种一对多的依赖关系,让多个观察者对象同时关注同一个对象,当该对象的状态发生变化时,所有依赖他的对象都得到通知并被自动更新。 关系图: codepublic interface Observer { public void update(); } ...原创 2014-10-09 08:35:08 · 91 阅读 · 0 评论 -
外观模式(Facade)
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例)我们先看下实现类:[java] view plaincopypublic class CPU { ...原创 2014-09-06 22:34:46 · 205 阅读 · 0 评论 -
桥接模式(Bridge)
桥接模式(Bridge)桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。我们...原创 2014-09-15 16:19:42 · 105 阅读 · 0 评论 -
状态模式(State)
1,核心思想 当对象的状态改变时,同时改变其行为。就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态。 在状态模式中,状态是核心,因为状态的改变引起行为的改变是状态模式的用意所在。因此,在状态模式中需要包含如下2个类。 状态类State:它自身包含状态变量value,并提供了根据状态变量的不同值进行切换的操作函数。 状...原创 2014-09-15 16:42:16 · 102 阅读 · 0 评论 -
中介者模式(Mediator)
一、核心思想 用一个中介对象来封装一系列关于对象交互的行为。使多对多的关系变成一对多的关系。中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。 ...原创 2014-09-19 08:52:03 · 151 阅读 · 0 评论 -
代理模式(Proxy)
一、核心思想 为一个对象提供一个代理对象,并由代理对象控制对象的引用。代理与适配器、装饰器的区别:1)、适配器是将类A转换成另一个类B2)、装饰器是为了一个类A增加一个新功能,从而变成类B.3)、代理模式是为一个类A转换操作类B.关系图:代码:[java] view plaincopypublic interface Sourceab...原创 2014-09-22 09:56:50 · 138 阅读 · 0 评论 -
享元模式(Flyweight)
一、核心思想 共享享元模式的主要作用是实现对象共享,即使用共享池,从而减少内存分配的开销。享元模式通常与工厂模式一起使用,它包含了多个共享的组合对象,因此:享元模式 = 单例模式 + 工厂模式 + 合成模式。 FlyweightFactory:享元工厂负责创建和管理享元对象,它必须保证享元对象可以被系统适当共享。当一个客户端请求时,工厂需要检查当前对象池中是否有符合条...原创 2014-09-23 08:44:36 · 101 阅读 · 0 评论 -
策略模式(Strategy)
一、核心思想策略模式定义了一系列的算法,并将每一个算法封装起来,使他们可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。策略模式将一系列的算法包装为一个接口抽象类的子类,并由调用者决定调用某一个子类。关系图如下: 二、何时使用策略模式策略模式是一个提倡针对接口编程的模式,而使用接口的目的是为了统一标准或者说是指定一种强行的规定。策略模式的使用是由用户发起的...原创 2014-10-06 09:23:56 · 110 阅读 · 0 评论 -
模版方法模式
一、核心思想让抽象类给出程序的骨架和轮廓,在抽象类中编写主方法,并申明一些抽象方法,迫使子类实现剩余逻辑。关系图: public abstract class AbstractCalculator { /*主方法,实现对本类其它方法的调用*/ public final int calculate(String exp,Strin...原创 2014-10-08 08:19:35 · 74 阅读 · 0 评论 -
建造者模式
一, 概念 建造者模式是一个对象的创建模式,将一个产品的内部表现跟产品的生产过程分割开来, 从而可以使一个建造过程生成具有不同的内部表象的产品对象。二, 结构 本模式涉及四个角色: 1), 抽象建造者(Builder):给 出一个抽象接口,以规范产品对象的各个组成成分的建造。 一般...原创 2018-01-31 16:04:25 · 128 阅读 · 0 评论