JAVA设计模式
学霸的一天
神说要有光
展开
-
JAVA--设计模式概述
1,设计模式的分类: 总体来说,设计模式分为三大类 (1) 创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式 (2) 结构型模式,共七种:适配器模式,装饰器模式,代理模式,外观模式,桥接模式, 组合模式,享元模式 (3)行为型模式,共十一种:策略模式,模版方法模式,观察者模式,迭代原创 2016-04-25 09:57:23 · 484 阅读 · 0 评论 -
JAVA--策略模式(strategy)--设计模式十三
1,概述: (1) 策略模式定义了一系列算法,使他们可以相互转换,且算法的变化不会影响到使用 算法的客户,需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口, 设计一个抽象类(可有可无,输入辅助类),提供辅助函数,关系图如下: 2,总结:原创 2016-04-25 10:46:02 · 480 阅读 · 0 评论 -
JAVA--模版方法模式(Template Method)--设计模式十四
1,概述: (1)模版方法模式的意图是在一个方法里实现一个算法,并推迟定义算法的某些步骤, 从而让其他类重新定义他们 (2) 模版方法模式是指:一个抽象类中,有一个主方法,再定义 1......n 个方法,也可以是 抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类 ,实现对子类的调用,如图:原创 2016-04-25 10:48:31 · 591 阅读 · 0 评论 -
JAVA--观察者模式(Observer)--设计模式十五
1,概述: (1) 这个模式是类与类之间的关系,不涉及到继承,观察者模式很好理解,类似于邮件 订阅和RSS订阅,当我们浏览一些博客或者wiki(维基百科)时,经常会看到RSS图标,这就 是说,当你订阅了该文章,如果后续有更新,会及时通知你,其实,简单一句话就是说:当 一个对象变化时,其他依赖该对象的对象都会收到通知,并且随着变化,对象之间是一种 一原创 2016-04-25 10:52:14 · 1300 阅读 · 0 评论 -
JAVA--迭代子模式(Iterator)--设计模式十六
1,概述: (1)顾名思义,迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见, 如果对集合类比较熟悉的话,理解本模式会十分轻松,这句话包含两层意思,一是需要 遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问,如图: 这个思路和我们常用的一模一样,MyCollection中定义了集合的一些操作原创 2016-04-25 10:55:53 · 711 阅读 · 0 评论 -
JAVA--责任链模式(Chain of Responsibility)--设计模式十七
1,概述: (1)责任链的目的就是通过给予多个对象处理请求的机会,以解除请求的发送者和 接受者之间的耦合 (2)有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条 链上传递,直到某一对象决定处理该请求,但是发出者并不清楚到底最终哪个对象会处理请求 ,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统原创 2016-04-25 10:59:28 · 596 阅读 · 0 评论 -
JAVA--命令模式(Command)--设计模式十八
1,概述: (1)命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来 考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵的耳朵里面,士兵去执行, 这个过程好在,三者相互解耦,任何一方都不用去依赖别人,只需要做好自己的事情就行, 司令员要的是结果,不会去关心到底士兵是怎么实现的,如图:原创 2016-04-25 11:07:39 · 601 阅读 · 0 评论 -
JAVA--备忘录模式(Memento)--设计模式十九
1,概述: (1)备忘录模式的意图就是为对象提供存储和恢复功能 (2)主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份 模式更形象一点,通俗的将:假设有原始类A,A中有各种属性,A可以决定需要的时候备份 属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能 存,不能修改等操作,如图原创 2016-04-25 11:09:57 · 739 阅读 · 0 评论 -
JAVA--解释器模式(Interpreter)--设计模式二十三
1,概述: (1)解释器模式是我们暂时的最后一讲,一般主要应用在OOP开发中的编译器的开发中, 所以适用面比较窄 Context类是一个上下文环境类,Plus和Minus分别是用来计算的实现,代码如下:原创 2016-04-26 10:26:20 · 808 阅读 · 0 评论 -
JAVA--中介者模式(Mediator)--设计模式二十二
1,概述: (1)中介者模式也是用来降低类和类之间的耦合的,因为如果类类之间有依赖关系的话, 不利于功能的扩展和维护,因为只要修改一个对象,其他关联的对象都要进行修改,如果使用 中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行, 这有点像spring容器,如图:原创 2016-04-26 10:27:02 · 644 阅读 · 0 评论 -
JAVA--访问者模式(Visitor)--设计模式二十一
1,概述: (1)访问者模式把数据结构和作用于结构上的操作解耦,使得操作集合可相对自由地演化 ,访问者模式适用于数据结构相对稳定算法又易变化的系统,因为访问者模式使得算法操作 增加变得容易,若系统数据结构对象易于变化,经常有新的数据增加进来,则不适合使用 访问者模式,访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者, 访问者模式将有关行为集原创 2016-04-26 10:27:57 · 540 阅读 · 0 评论 -
JAVA--享元模式(Flyweight)--设计模式十二
1,概述: (1)享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少 内存的开销,通常与工厂模式一起使用 FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前 对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个原创 2016-04-25 10:43:47 · 644 阅读 · 0 评论 -
JAVA--组合模式(Composite)--设计模式十一
1,概述: (1)组合模式有时又叫“部分-整体”模式在处理类似树形结构的问题时比较方便,如图: (2)代码: 2,总结: (1)使用场景:将多个对象组合在一起进行操作,常用于表示树形结构中,例如, 二叉树等原创 2016-04-25 10:40:17 · 513 阅读 · 0 评论 -
JAVA--简单工厂模式,工厂方法模式--设计模式一
1,简单工厂模式的分类和使用场景: (1)简单工厂模式一般分为:普通简单工厂,多方法简单工厂,静态方法简单工厂 (2)使用场景: 总体来说,工厂模式适合,凡是出现了大量的产品需要创建,并且具有共同的接口时, 可以通过工厂方法模式进行创建,在以下的三种模式中,第一种如果传入字符串有误,不能 正确创建对象,第三种相对于第二原创 2016-04-25 10:04:22 · 1126 阅读 · 0 评论 -
JAVA--抽象工厂模式--设计模式二
1,抽象工厂的实例和好处: (1)抽象工厂模式又名工具箱,其意图是允许创建一族相关或相互依赖的对象 (2)抽象工厂模式是工厂方法模式的进一步抽象,是为创建一组相关的或相互依赖的对象提供一个接口,无需指定他们的具体类。 (3)抽象工厂模式相比于工厂方法模式来说,每个具体工厂可以生产一族产品(即多种产品);而工厂方法模式是具体工原创 2016-04-25 10:08:00 · 466 阅读 · 0 评论 -
JAVA--单例模式(Singleton)--设计模式三
1,单例模式的概述: (1)单例对象是一种常用的设计模式,在java应用中,单例对象能保证在一个 JVM中,该对象只有一个实例存在,这样的模式有几个好处: ①某些类创建比较频繁,对于一些大型的对象,这是一笔很大的开销 ②省去了new操作符,降低了系统内存的使用频率,减轻GC压力 ③有些类如原创 2016-04-25 10:13:41 · 959 阅读 · 0 评论 -
JAVA--建造者模式(Builder)--设计模式四
1,建造者模式的概述:-----没看懂----- (1)建造者模式的主要特征是,通过一步一步的方法生成一些东西,每个生成的 东西,即使每一步都不相同,但也将遵循同样的过程。 (2)四个角色:指挥者(Director),建造者(Builder),具体建造者 (ConcreteBuilder),产品(Produce)原创 2016-04-25 10:16:23 · 537 阅读 · 0 评论 -
JAVA--原型模式(Prototype)--设计模式五
1,概述: (1)原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出, 该模式的思想就是将一个对象作为原型,对其进行复制,克隆,产生一个和原型对象 类似的新对象, 2,实现: (1)这里会通过对象的复制,进行讲解,在java中,复制对象是通过clone() 实现的,先原创 2016-04-25 10:19:12 · 547 阅读 · 0 评论 -
JAVA--适配器模式(Adapter)--设计模式六
1,概述: (1)对象的适配器模式是各种模式的起源: (2)适配器模式: 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是 消除由于接口不匹配所造成的类的兼容性问题,主要分为三类: ①类的适配器模式 ②对象的适配器模式 ③接口的适配原创 2016-04-25 10:24:34 · 1715 阅读 · 0 评论 -
JAVA--装饰模式(Decorator)--设计模式七
1,概述: (1)装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和 被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例 (2)代码: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加 一些功能,如下: (3)总结原创 2016-04-25 10:27:38 · 583 阅读 · 0 评论 -
JAVA--代理模式(Proxy)--设计模式八
1,概述: (1)代理模式就是多出一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候会去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。 (2)代码:原创 2016-04-25 10:31:51 · 3181 阅读 · 0 评论 -
JAVA--外观模式(Facade)--设计模式九
1,概述: (1)外观模式是为了解决类与类之间的依赖关系的,像Spring一样,可以将类与类之间 的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类 与类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过 程为例) (2)代码:原创 2016-04-25 10:35:00 · 550 阅读 · 0 评论 -
JAVA--桥接模式(Bridge)--设计模式十
1,概述: (1)桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化,桥接的意思是: 将抽象化和实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样, JDBC进行连接数据库的时候,在各个数据库直接进行切换,基本不需要动太多的代码,甚至 丝毫不用动,原因是JDBC提供同一接口,每个数据库提供各自的实现,用一个叫做原创 2016-04-25 10:38:04 · 559 阅读 · 0 评论 -
JAVA--状态模式(State)--设计模式二十
1,概述: (1)核心思想:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种 状态,在线,隐身,忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以 ,状态模式就两点,一,可以通过改变状态来获得不同的行为,二,你的好友能同时看到你的 变化,如图: State类是一个状态类,Context类可以原创 2016-04-26 10:28:20 · 646 阅读 · 0 评论