设计模式
小马的学习笔记
这个作者很懒,什么都没留下…
展开
-
设计模式之单例模式
什么是单例模式定义:单例模式,是一种常用的软件设计模式。在他的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,即一个类只有一个对象实例。 作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 特点:(1)单例类只能有一个实例(2)单例类必须自己创建自己的唯一实例(3)单例类必须给其他的对象提供这一实例原创 2018-01-31 10:41:41 · 208 阅读 · 0 评论 -
设计模式之享元模式
设计模式之享元模式 定义运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。 核心享元模式以共享的方式高效地支持大量细粒度对象的重用,享元对象能做到共享的关键是区分了内部状态(Intrinsic State)原创 2018-02-12 16:50:32 · 221 阅读 · 0 评论 -
设计模式之桥接模式
设计模式之桥接模式 定义就像一个桥,将两个变化维度连接起来,各个维度都可以独立的变化,故称为:桥接模式 介绍桥接模式(Bridge)将抽象部分与实现部分分离,使他们都可以独立的变化。桥接模式是一种结构式的模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。多重继承方案往往违背了类得单一职责原则,其复用性比较差,桥接模式是比多重继承方案更好的解决方案。原创 2018-02-07 11:02:15 · 157 阅读 · 0 评论 -
设计模式之命令模式
设计模式之命令模式 定义将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事物transaction模式 命令模式的角色结构顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构: 抽象命令类(Command):是一个抽象类,类中对需要执行的命令进行原创 2018-02-27 17:40:50 · 184 阅读 · 0 评论 -
设计模式之解释器模式
设计模式之解释器模式 定义(1)给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。 介绍(1)是一种不常用的设计模式(2)用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计(3)当我们需要开发一种新的语言时,可以考虑使用解释器模式(4)尽量不要使用解释器模式,后期维护会有很大的麻烦,在转载 2018-02-28 10:05:04 · 201 阅读 · 0 评论 -
设计模式之访问者模式
设计模式之访问者模式 定义封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 类图 访问者模式可能是行为类模式中最复杂的一种模式了,但是这不能成为我们不去掌握它的理由。 我们首先来看一个简单的例子,代码如下class A { public void method1(){转载 2018-02-28 10:48:56 · 168 阅读 · 0 评论 -
设计模式之责任链模式
设计模式之责任链模式 定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。这就是责任链模式。 核心责任链模式是使用多个对象处理用户请求的成熟模式,责任链模式的关键是将用户的请求分派给许多对象,这些对象被组织成一个责任链,即每个对象含有后继对象的引用,并要求责任链上的每个对象,如果原创 2018-02-21 12:12:00 · 239 阅读 · 0 评论 -
设计模式之策略模式
设计模式之策略模式 定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 本质分离算法,选择实现 概念策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一个问题,同时可以方便的更换算法或者增加新的算法,并且有客户端决定调用哪个算法。 策略模式的结构原创 2018-03-02 10:47:06 · 194 阅读 · 0 评论 -
设计模式之模版方法模式
设计模式之模版方法模式 定义模版方法模式是编程中经常用得到的模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。 通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个原创 2018-03-02 15:38:27 · 244 阅读 · 0 评论 -
设计模式之代理模式
设计模式之代理模式 定义为其他对象提供一种代理,以控制对这个对象的访问。在一些情况下,一个对象不适合或者不能直接引用另一对象,而代理对象可以在客户端和目标对象之间起到中介的作用 角色的分类(1)抽象角色定义代理角色和真实角色的公共对外接口(2)真实角色实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色的调用。(3)代理角色代理对象角色内部含有对真实原创 2018-02-06 12:10:57 · 198 阅读 · 0 评论 -
设计模式之迭代器模式
设计模式之迭代器模式 定义提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。又称为游标cursor模式 角色分类(1)抽象容器角色(Aggregate):一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。(2)具体容器角色(ConcreteAggregate):就是抽象容器的具原创 2018-02-24 10:31:19 · 164 阅读 · 0 评论 -
设计模式之中介者模式
设计模式之中介者模式 定义用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 核心(1)如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这些对象称为“同时对象”(2)我们可以引入一个中介者对象,使各个同时对象只跟中介者对象打交道,将复杂的网络结构化解为如原创 2018-02-26 11:56:09 · 270 阅读 · 0 评论 -
设计模式之工厂模式
设计模式之工厂模式 定义:工厂模式是java中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂模式主要是为创建对象提供过度接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 核心本质:(1)实例化对象,用工厂方法代替new操作(2)将选择实现类,创建对象统一管理和控制,从而将调用者跟我们的实现类解耦原创 2018-02-01 10:19:53 · 198 阅读 · 0 评论 -
设计模式之建造者模式
设计模式之建造者模式 定义:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式 核心本质:(1)分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。(2)由于实现了构建和装配的解耦。不同的构建器,相同的原创 2018-02-02 11:31:27 · 153 阅读 · 0 评论 -
设计模式之原型模式
设计模式之原型模式(克隆模式) 定义:通过复制现有的对象实例来创建对象实例 核心本质:就是java的克隆技术,已某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点。 原型模式实现方法:(1) 实现Cloneable接口 Cloneable接口的作用是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只原创 2018-02-03 18:05:08 · 154 阅读 · 0 评论 -
设计模式之组合模式
设计模式之组合模式 概念组合模式又叫做部分-整体模式,组合模式允许你将对象组合成树形结构来表现“部分-整体”的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。(客户程序可以像处理简单元素一样来处理复杂元素)从而使得客户端程序与复杂的内部结构解耦。 组合模式核心(1)抽象构件角色:定义了叶子和容器构件的共同点(2)叶子(Leaf)构件角色:无子节点(3原创 2018-02-08 11:16:09 · 197 阅读 · 0 评论 -
设计模式之装饰模式
设计模式之装饰模式 定义装饰器模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。在不必改变原类文件和原类使用的继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是使用装饰来包裹真实的对象来实现。 角色分类抽象构件角色(Component):真实对象和装饰对象有原创 2018-02-09 21:22:44 · 161 阅读 · 0 评论 -
设计模式之适配器模式
设计模式之适配器模式 定义:将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 模式中的角色 目标(Target)角色:客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 需要适配的类(源(Adapee)角色):需要适配的类或适配者类。也就是我们要使用的接口,但是这个接口不符合原创 2018-02-05 10:40:44 · 171 阅读 · 0 评论 -
设计模式的六大原则
设计模式的六大原则 (1)单一职责原则 SRP一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。(2)开闭原则 OCP一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。(3)里氏替换原则 LSP所有引用基类(父类)的地方必须能透明地使用其子类的对象。(4)依赖转载 2018-02-05 17:00:16 · 222 阅读 · 0 评论 -
设计模式之外观模式
设计模式之外观模式 定义为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式核心为子系统提供统一的入口。封装子系统的复杂性,便于客户端调用。 角色分类 (1)外观(Facade)角色 :客户端可以调用这个角色的方法。此角色知晓相关子系统的功能和责任。在正常情况下,本角色会将所有从客户端原创 2018-02-11 11:39:42 · 211 阅读 · 0 评论 -
常用设计模式总结
(1)装饰者模式定义:装饰者模式(Decorator Pattern)是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式。使用场景:装饰者在代码程序中适用于以下场景: 1、用于扩展一个类的功能或给一个类添加附加职责。 2、动态的给一个对象添加功能,这些功能可以再动态的撤销。例子:来看一个...原创 2019-03-23 12:27:28 · 340 阅读 · 0 评论