设计模式
木_樨
大数据爱好者,欢迎大家关注我!
展开
-
Java设计模式之行为型模式(访问者模式)
访问者模式(Visitor)1、概述①定义表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必备条件。——GoF《Design Pattern》“对象结构”:是一个具体类,封装了若干元素。“不改变各元素类”:不对“对象结构”中的元素进行修改。“新操作”:对“对象结构”中的元素进行的非侵入式操作,可定义若原创 2017-02-10 22:04:42 · 712 阅读 · 0 评论 -
Java设计模式概述之创建型模式
Java一共有23种设计模式,23种设计模式大致分为三大类:创建模式、结构化模式、行为模式。Tip:由于23三种设计模式的篇幅较长,先来介绍我们比较熟悉的建造者模式。一、单例模式(Singleton)单例模式中的单例是指唯一的实例对象。Java API中的Calendar类就利用了单例模式。相信大家应该对这条语句不陌生:Calendar.getInstance()。这条语句创建了一个单例。再如在某些原创 2017-02-03 21:08:20 · 232 阅读 · 0 评论 -
Java设计模式概述之结构型模式(适配器模式)
结构型模式清单:适配器模式、桥接模式、复合模式、装饰模式、外观模式、元模式、代理模式。其中,适配器模式、装饰模式、元模式、代理模式适用场景较多,须重点掌握。一、适配器模式适配器模式分为类适配器模式、对象适配器模式、缺省适配器模式。适配器模式思想原理很简单。举个简单的例子:笔记本电脑充电。笔记本电脑充电的过程涉及三个元件:笔记本、电源适配器、插座。大家可以思考为什么有电源适配器。首先,插座并不知晓笔记原创 2017-02-06 11:31:20 · 271 阅读 · 0 评论 -
Java设计模式概述之结构型模式(代理模式)
二、代理模式我们在实践过程中,常常需要对一个类的功能进行完善和增强。于是,我们经常会用继承类和实现接口的方式来增强一个类,但这样或多或少会造成类与类之间的耦合:继承类之后不能再继承其他类;实现接口的话必须实现接口中的所有方法,且若接口的方法发生改变,实现接口类也必须做出改变,这样不利于最大限度扩展。代理模式(Proxy)使用代理类来增强原始类。代理类需要与原始类建立逻辑关系的代码,而原始类不需要任何原创 2017-02-06 13:38:35 · 175 阅读 · 0 评论 -
Java设计模式概述之结构型模式(装饰器模式)
在Java中,装饰器模式使用场景非常普遍,例如BufferedInputStream就利用了装饰器模式。装饰器模式与代理模式非常相似,相似点可总结如下:1、都是对原始类功能、特性的增强。 2、都是通过注入原始类的应用来实现类的增强。 3、其增强原始类的方式都是非侵入的,可插拔的。 4、被扩展后的代码具有良好的扩展性。当然,不同点如下:1、注入方式不同。装饰器模式是通过其构造方法接受原始类的实例原创 2017-02-06 14:10:09 · 213 阅读 · 0 评论 -
Java设计模式概述之结构型模式(组合模式)
四、组合模式(Composite)组合模式相对不好阐述。引用大话设计模式的片段:“当发现需求中是体现部分与整体层次结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑组合模式了。”组合模式与树形结构程序设计是密不可分的。组合模式很好的体现了“整体——部分”的关系。下面给大家一段自己写的有关组合模式的代码:import java.util.Enumera原创 2017-02-06 14:42:17 · 203 阅读 · 0 评论 -
Java设计模式概述之结构型模式(享元模式)
五、享元模式(Flyweight)享元模式简介Flyweight本意是拳击中的绳量级,在这里是指代共享的元素。享元模式指多个元素共享使用。把生活中的公共设施比作这里的元素,每个人都能享用元素,人人共享资源。享元模式最大的特点就是资源共享性。Java中String类型利用了享元模式。代码如下:String a = "abc";String b = "abc";System.out.println(a原创 2017-02-06 21:20:23 · 246 阅读 · 0 评论 -
Java设计模式概述之结构型模式(外观模式)
六、外观模式(Facade)概述外观模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。外观模式的中的外观是一个抽象的概念,泛指外部的对象。外观对象中包含了若干的内部对象,内部的各个对象存在某些逻辑关联,从而组成简单或复杂的内部系统。外观模式使外观对象将若干内部对象的逻辑细节封装,使得外界不必直接调用内部对象,只需通过调用外观对象来实现某些功能。应用原创 2017-02-07 15:34:32 · 376 阅读 · 0 评论 -
Java设计模式概述之结构型模式(桥接模式)
七、桥接模式概念小插曲将抽象与具体分离就是桥接模式。我勒个去,GOF里面的这一句想必很难理解。这句话的确很抽象,但我们仔细琢磨琢磨,还是会柳暗花明的。桥接模式的“桥”字,说实话我也不明白为什么要以“桥接”来命名这一模式,所以先请大家把“桥接模式”抽象地看作“**模式”,不再为名字而迷惑。解释在Java中,“抽象”大概可以指interface,abstract class,因此,大家暂时把“抽象”理解原创 2017-02-07 21:49:28 · 190 阅读 · 0 评论 -
Java设计模式之行为型模式(责任链模式)
责任链模式概述责任链模式是将多个处理事件的行为组合成一条链,通过调用链来对事件进行批处理。与单一事件处理不同,责任链模式强调多个事件连续处理,注重事件处理的序列化。适用场景一个简单事件运行有一个前提:被触发。一个简单事件只有收到运行的请求才会运行。在程序设计中,若单个简单的事件越来越多,就必然会重复发送许多条相同的请求事件运行的命令。责任链模式就是针对这一问题的。责任链模式将多个事件集成为一个序列化原创 2017-02-08 14:35:02 · 187 阅读 · 0 评论 -
Java设计模式之行为型模式(命令模式)
命令模式(Command)1、概述命令模式由三部分构成:Invoker(命令触发器)、Executor(命令处理器)、Responder(命令响应器)。命令模式将客户端(也就是这里的Invoker命令触发器)与服务端(Responder命令响应器)两者解耦。客户端只需要关注自己发送哪一条命令,而无需关注服务端的实现细节;服务端只需关注命令是什么,根据命令作出相应响应,而无需与客户端建立直接联系。命令原创 2017-02-08 16:11:40 · 279 阅读 · 0 评论 -
Java设计模式之行为型模式(迭代器模式)
迭代器模式(Iterator)1、概述迭代器模式针对的对象是集合类(Tips:这里的集合类泛指存入多个元素的类),使得该集合类拥有访问该集合类所有元素的迭代器类,并通过迭代器类获取该集合类的每一个元素,而且不暴露内部元素细节。2、应用场景①应用的对象必须是可遍历的集合类②需要对集合类的内部元素进行批量取出③不能暴露内部元素的细节我们所熟知的Java Collection架构就利用到了迭代器模式,所有原创 2017-02-08 17:06:23 · 182 阅读 · 0 评论 -
Java设计模式之行为型模式(中介者模式)
中介者模式(Mediator)1、背景类与类之间会产生直接的交互,这在实际的编码中是常见的,例如,A类调用B类的方法。我们常说的“对扩展开放,对修改关闭”原则就是要防止某处修改导致处处修改的情景,因为这样极不利于后期维护。当A类直接调用B类的方法时,A类对B类产生了直接的依赖关系:A类直接依赖B类的方法。当B类的方法发生修改时(例如B类方法的方法名发生改变,B的类名发生改变),A类中的调用B类的方法原创 2017-02-08 22:02:18 · 265 阅读 · 0 评论 -
Java设计模式之行为型模式(备忘录模式)
备忘录模式1、背景在日常生活中,当我们重装电脑系统时,或多或少都会将之前的系统备份,以防日后电脑发生故障时能够及时恢复。备份思想无处不在,在编码工作中亦如此。Java是面向对象的编程语言,核心的思想就是对象。我们在使用对象的过程中,可能会频繁的修改对象的相关值,若这些相关值每一个都意义(或都很重要),就需要对以前的值进行备份操作。备忘录模式正是针对的对象的备份。2、概述①定义备忘录模式将对象的数据做原创 2017-02-09 10:39:52 · 295 阅读 · 0 评论 -
Java设计模式之行为型模式(观察者模式)
观察者模式(Observer)1、背景在软件开发中,当一个类发生变化,需要通知其他类,并让其他类做某些逻辑操作,观察者模式应运而生。2、概述①定义将主类与其他多个类建立一种“一对多”的通信关系,当“主类“发生某些操作时,与之建立从属关系的类作出反应。②应用场景监听某个类的运行情况被监听类分发信息、监听类订阅信息场景多个程序的同步更新同步产生程序运行日志③优势一次修改处处运行,提高程序运行原创 2017-02-09 15:35:53 · 223 阅读 · 0 评论 -
Java设计模式之行为型模式(状态模式)
状态模式(State)1、概述①定义状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。②适用场景一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。③结构State类为状态类,用来存储一些状态信息。Context类为上下文类,用来存储State。React类为反应器,根据Con原创 2017-02-09 20:35:39 · 230 阅读 · 0 评论 -
Java设计模式之行为型模式(策略模式)
策略模式(Strategy)1、概述①定义《JAVA与模式》一书中是这样定义策略模式的:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的策略是什么意思?有朋友可能会疑惑:在Java中,“策略”和“方法”有什么区别?首先,策略与方法含义相近,都指应对问题的办法手段。策略比方法更加宏观,更加正式,策略更加强调地位作用,可原创 2017-02-09 21:54:26 · 229 阅读 · 0 评论 -
Java设计模式之行为型模式(模板模式)
模板模式1、概述①定义模板模式使用一个抽象类将各个具体类中相同或相近的成分抽取出来,并让各个具体类继承该抽象类,共享相同或相近的成分。具体类通过继承抽象类也可以重写模板类的方法。②结构UML图:Template为模板类,它是一个抽象类,集成了ConcreteClassA、ConcreteClassB、ConcreteClassC的相同部分:publicField属性,publicMethod()方原创 2017-02-10 10:53:56 · 271 阅读 · 0 评论 -
设计模式六大原则
一、单一职责原则定义:一个类只负责一个功能领域中的相应职责。在开发中,一个类愈是集成多的功能,凝聚多的职责,这个类的复用性,可扩展性就愈弱。因此,我们在开发某个软件的各个功能模块时,尽量使一个类就负责履行具体某一类的职责,实现其应有的功能。单一职责原则是软件开发中高内聚,低耦合的指导方针。开发过程应紧紧围绕这一方针进行,这有利于软件的后期维护。二、开闭原则定义:一个软件实体应当对扩展开放,对修改关闭原创 2017-03-09 21:56:11 · 257 阅读 · 0 评论