![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 66
sinat_37138973
这个作者很懒,什么都没留下…
展开
-
6个软件原则
单一职责原则,SRP(Single Responsibility Principle)里氏替换原则,LSP(Liskov Substitution Principle)开放-关闭原则,OCP(Open-Close Principle)接口隔离原则,ISP(Interface Segregation Principle)依赖倒置原则,DIP(Dependence Inversion Prin...转载 2019-03-05 12:17:05 · 302 阅读 · 0 评论 -
15、Interpreter 解释器模式
给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。类图代码示例1. classContext{}2. abstractclassExpression{3. publicabstractObjectinterpreter(Contextctx);4. }5. classTerminalEx...转载 2019-03-18 12:35:03 · 142 阅读 · 0 评论 -
14、Visitor 访问者模式
封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类图代码示例访问者模式可能是行为类模式中最复杂的一种模式了。1. classA{2. publicvoidmethod1(){3. System.out.println("我是A");4. }5. ...转载 2019-03-18 12:19:06 · 135 阅读 · 0 评论 -
13、Mediator 中介者(调停者)模式
用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类图代码示例我们使用一个例子来说明一下什么是同事类:有两个类A和B,类中各有一个数字,并且要保证类B中的数字永远是类A中数字的100倍。也就是说,当修改类A的数时,将这个数字乘以100赋给类B,而修改类B时,要将数除以100赋给类A。类A类B互相影响,就称为同...转载 2019-03-18 12:03:45 · 238 阅读 · 0 评论 -
12、Chain of Responsibility 职责链模式
使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。类图代码示例1. classLevel{2. privateintlevel=0;3. publicLevel(intlevel){4. this.level=le...转载 2019-03-18 11:50:10 · 137 阅读 · 0 评论 -
10、State 状态模式
当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。类图State类是个状态类,Context类可以实现切...转载 2019-03-18 11:35:57 · 132 阅读 · 0 评论 -
11、Strategy 策略模式
定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。策略模式与模板模式在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,策略模式与模版方法模式的区别仅仅是多了一个单独的封装类Context,它与模版方法模式的区别在于:在模版方法模式中,调用算法的主体在...转载 2019-03-06 18:41:26 · 179 阅读 · 0 评论 -
17、Proxy 代理模式
代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。举例说明,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用。通过上面的代理模式描述我们可以知道,其目的就是为了控制对象引用,生活场景中我们以买车为例,如果我们要买一辆轿车必须通过汽车4S店,汽车4...原创 2019-03-06 18:14:36 · 263 阅读 · 0 评论 -
9、Command 命令模式
一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在,三者相互解耦,任何一方都不用去依赖其他人,只需要做好自己的事儿就行,司令员要的是结果,不会去关注到底士兵是怎么实现的。类图...转载 2019-03-06 17:30:59 · 405 阅读 · 0 评论 -
设计模式目录
创建型模式1、单例模式2、Factory 工厂模式3、Abstract Factory 抽象工厂4、Builder 建造者模式5、Prototype 原型模式行为型模式6、Iterator 迭代器模式7、Observer 观察者模式8、Template Method 模板方法9、Command 命令模式10、State 状态模式11、Strategy...原创 2019-03-06 17:26:03 · 127 阅读 · 0 评论 -
5、Prototype 原型模式
原型模式被用在频繁调用且极其相似的对象上,它会克隆对象并设置改变后的属性,而且消耗的资源较少。原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中...原创 2019-03-06 17:15:15 · 262 阅读 · 1 评论 -
4、Builder 建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。建造者模式的关键特性是它将一个建造过程分解成很多步骤,也可以说,每个产品的建造会遵循同样的流程,不过流程内的每一个步骤都不尽相同。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。意图:将...原创 2019-03-06 17:04:50 · 416 阅读 · 0 评论 -
6、Iterator 迭代器模式
提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类图代码实例如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:1. publicstaticvoidprint(Collectioncoll){2. Iteratorit=coll.iterator...原创 2019-03-05 13:20:56 · 268 阅读 · 1 评论 -
8、Template Method 模板方法
模板方法模式是在日常开发中使用最为广泛的设计模式之一。定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类图代码实例某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功能好实现,排序就有点麻烦了。但是A有办...原创 2019-03-05 13:00:28 · 269 阅读 · 1 评论 -
7、Observer 观察者模式
简而言之,观察者模式=发布者+注册者。观察者模式用来对GUI中的动作做侦听。Swing GUI的例子就表明了动作侦听是怎样实现观察者模式的。定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软...转载 2019-03-05 12:48:13 · 175 阅读 · 0 评论 -
3、Abstract Factory 抽象工厂
抽象工厂模式是在工厂模式的基础上增加的一层抽象概念。如果比较抽象工厂模式和工厂模式,我们不难发现前者只是增加了一层抽象的概念。抽象工厂是一个父类工厂,可以创建其它工厂类。故我们也叫它“工厂的工厂”。类图代码示例interface CPU {void process();}interface CPUFactory {CPU produceCPU(...转载 2019-03-05 12:39:34 · 173 阅读 · 0 评论 -
2、Factory 工厂模式
工厂模式是根据不同的参数创建对象。例如用工厂创建人。 如果我们想要一个男孩,工厂就会为我们生产一个男孩;如果我们需要一个女孩,工厂则会为我们生产一个女孩。工厂会根据不同的参数,为我们提供不同的物品。实例化对象,用工厂方法代替new操作。定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化。工厂方法把实例化的工作推迟到子类中去实现。工厂模式设计尽量松耦合,一个对象的依赖对象...原创 2019-03-05 12:32:02 · 218 阅读 · 0 评论 -
1、单例模式
有些对象我们只需要一个,比如:配置文件、工具类、线程池、缓存、日志对象等。单例模式是Java中最常用的设计模式之一,它通过阻禁止外部实例化和修改,对象的方式来控制所创建的对象的数量。这个概念可以被广泛地推广到仅使用有一个现存的对象能更高效运行的系统,或者是限制在若干个对象实例化为特定的数目的高效系统环境系统中。私有构造函数-其他类不能实例化一个新的对象。 私有化引用-不能进行外部...原创 2019-03-05 12:26:00 · 121 阅读 · 0 评论 -
16、Memento 备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回。这时我们便可以使用备忘录模式来实现。类图代码...转载 2019-03-20 17:29:05 · 161 阅读 · 0 评论