
23种设计模式
java的23种设计模式
修炼中的菜鸟
这个作者很懒,什么都没留下…
展开
-
设计模式1-单例模式
单例模式是类在运行程序中只产生一个对象,类外不能通过new创建对象。单例对于创建和销毁对象需要很大资源的类来说比较合适,在spring中,spring管理的bean模式就是单例模式,下面来看两个简单的单例模式,一个是饿汉模式,一个是懒汉模式。 饿汉模式:package com.jack.singleton;/** * Created by jack on 2017/8/原创 2017-08-01 15:51:24 · 558 阅读 · 0 评论 -
设计模式2-工厂方法模式
有这么一个场景,女蜗造人,造了三种人类,白色人种,黑色人种,黄色人种。这里用软件设计的方法来实现,涉及到女蜗,八卦炉,三种颜色的人。 类图如下: 定义一个人类接口,人类的总称:package com.jack.factory;/** * Created by jack on 2017/8/1. * 人类接口 */public interface原创 2017-08-01 17:48:07 · 665 阅读 · 0 评论 -
设计模式3-抽象工厂模式
假如现在女蜗还需要生产男性和女性,使用抽象工厂模式,类图如下:定义人种接口:package com.jack.abstractfactory;/** * Created by jack on 2017/8/1. * 人类接口 */public interface Human { /** * 每个人种的皮肤都有相应的颜色 */原创 2017-08-01 19:06:35 · 453 阅读 · 0 评论 -
设计模式4-模板方法模式
模板方法模式,简单的说就是把子类的一些共通的东西放在抽象父类中实现,这样子类继承抽象父类,拥有了一样的东西,也不需要去写一些重复的代码。比如下面的一个类图: 上图中run方法就是子类共用的一个方法,代码都一样,子类为了减少代码,直接继承父类的run方法,实现模板的功能。 抽象类定义:package com.jack.modelmethod;/*原创 2017-08-02 18:20:09 · 444 阅读 · 0 评论 -
设计模式5-建造者模式
在上一篇中简单的说了下模板方法模式,这篇将简单的介绍下建造者模式,基于前面的http://blog.youkuaiyun.com/j903829182/article/details/76576712模式的一个改造。比如汽车启动的顺序需要可以控制设置,上篇的模式就不能够满足要求了,这里使用建造者模式来解决可以手动控制启动顺序的需求。类图如下: 编写一个汽车模型的抽象类,代原创 2017-08-03 12:02:30 · 471 阅读 · 0 评论 -
设计模式6-代理模式
代理模式我们平常用的比较多,比如spring的aop就是使用的代理模式。代理又分为静态代理和动态代理,动态代理又分了两种,具体的代理模式,我之前有博客已经提及了,这里就不多少了,具体的参考http://blog.youkuaiyun.com/j903829182/article/details/73799968http://blog.youkuaiyun.com/j903829182/article/detail原创 2017-08-03 12:17:23 · 405 阅读 · 0 评论 -
设计模式7-原型模式
原型模式其实是利用对象克隆来实现的,相对而言比较简单,使用克隆可以节约大量的资源原创 2017-08-03 15:45:25 · 573 阅读 · 0 评论 -
设计模式8-中介者模式
这篇来简单学习介绍下中介者模式,所谓的中介者模式,简单的说就是所有的对象不直接进行关联,都是通过一个中间对象进行关联,又点像网络中星型模型。原创 2017-08-04 14:52:55 · 441 阅读 · 0 评论 -
设计模式9-命令模式
这篇来简介一个命令模式原创 2017-08-07 10:44:22 · 421 阅读 · 0 评论 -
设计模式10-责任链模式
中国古代对妇女制定了“三从四德”的道德规范,“三从”是指未嫁从父,既嫁从夫,夫死从子。也就是说一位女性在结婚之前要听从父亲,结婚后要听从于丈夫,如果丈夫死了还要听从于儿子。比如要逛街,作为父亲,丈夫或儿子,只有两种选择:要不要承担起责任来,允许她或不允许她逛街;要不就让她请示下一个人。这就延伸出了责任链模式。类图如下:原创 2017-08-07 12:18:56 · 518 阅读 · 0 评论 -
设计模式11-装饰模式
装饰模式顾名思意,就是对原对象进行修饰。就像给房子装修一样,可以让房子好看。在java里面使用装饰模式,可以让对象的功能更加的好看,表达委婉。 假如有这样的一个场景,我们小时候考试,成绩考的不好,老师需要拿成绩单回去,给家长签字,由于成绩不好,根本不敢拿给家长看,更别说签名了。这时候如果我们能委婉的表达我们的成绩,说不定家长一高兴就签名了。看下面的类图:原创 2017-08-15 16:34:36 · 506 阅读 · 1 评论 -
设计模式12-策略模式
话说,三国演义中,孙权看出刘备有野心,杀不能杀,留着又是祸害,于是想出一个办法,准备招刘备做女婿。让后留着刘备在东吴,软禁刘备。东吴的想法很好,无奈有一个诸葛亮,他预测了东吴有此招数,于是在刘备去东吴招亲之前,特授给伴郎赵云三个锦囊,按天机拆开解决棘手问题。 这三个妙计分别是:找乔国老帮忙,求吴国太放行以及孙夫人断后。这三个计谋有一个方法都是执行,具体执行上面内容,每个计谋不同,执行不原创 2017-08-15 18:03:07 · 734 阅读 · 0 评论 -
设计模式13-适配器模式
之前的设计模式可以参考:http://blog.youkuaiyun.com/wj903829182/article/category/7068746 这里继续前面没有总结完的设计模式,适配器模式,适配器模式的定义:将一个类的接口变换成客户端期待的另外一种接口,从而使原本不匹配的而无法在一起工作的两个类能够在一起工作。 一 适配器模式的简单实现 适配器模式又叫做变压器模式,也原创 2018-01-26 12:16:18 · 504 阅读 · 0 评论 -
设计模式14-迭代器模式
其他设计模式的链接:http://blog.youkuaiyun.com/wj903829182/article/category/7068746 这里来了解下设计模式的迭代模式。一 迭代模式的简单实现案例1,类图 看上面的代码是不是有点复杂,下面我们来实现代码,可能看代码根据清晰。 项目信息接口:package com.jack.interator;/** * Cr原创 2018-01-26 15:02:31 · 435 阅读 · 0 评论 -
设计模式15-组合模式
一 组合模式的定义 组合模式也叫合成模式,有时又叫部分-整体模式,主要是用来描述部分与整体的关系,定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用一致性。 组合模式通用类图: Component抽象构建角色:定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性。Leaf叶子构件:叶子对象,其下再也没有其他的分支,原创 2018-01-26 18:11:27 · 486 阅读 · 0 评论 -
设计模式16-观察者模式
一 观察者模式定义 观察者模式也叫发布订阅模式,它是一个在项目中经常使用的模式,其定义如下:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式的通用类图:Subject被观察者:定义被观察者必须实现的职责,它必须能够动态的增加,取消观察者者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责:管理观察原创 2018-01-29 10:37:23 · 335 阅读 · 0 评论 -
设计模式17-门面模式
一 门面模式的定义 门面模式也叫外观模式,是一种比较常用的封装模式,其定义如下:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 门面模式注重统一的对象,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生,其通用类图如下:Facade门面角色:客户端可以调用这个角色的方法,此角色知晓子系统的原创 2018-01-29 11:53:11 · 445 阅读 · 0 评论 -
设计模式18-备忘录模式
一 备忘录模式的定义 备忘录模式提供了一种弥补真实世界缺陷的方法,让“后悔药”在程序的世界中真实可行。定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 通俗的说,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法,器通用类图如下: 上面的类图有三个角色:Originator发起角原创 2018-01-29 16:19:06 · 385 阅读 · 0 评论 -
设计模式19-访问者模式
一 访问者模式定义 访问者模式是一个相对简单的模式,定义如下:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 访问者模式的通用类图如下:Visitor抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的。ConcreteVisitor具体访问者:它影原创 2018-01-29 17:45:19 · 414 阅读 · 0 评论 -
设计模式20-状态模式
一 状态模式的定义 状态模式的定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样。状态模式的通用类图如下: 我们先来看看状态模式中的3个角色。 State——抽象状态角色接口或抽象类:负责对象状态定义,并且封装环境角色以实现状态切换。原创 2018-01-30 11:11:51 · 531 阅读 · 0 评论 -
设计模式21-解释器模式
一 接收器模式的定义 解释器模式(Interpreter Pattern)是一种按照规定语法进行解析的方案,在现在项目中使用较少,其定义:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 通用类图如下: AbstractExpression——抽象解释器:具体的解释任务由各个实现类完成,具体的解释器分别由TerminalE原创 2018-01-30 11:43:33 · 368 阅读 · 0 评论 -
设计模式22-享元模式
一 享元模式的定义 享元模式(Flyweight Pattern)是池技术的重要实现方式,其定义如下:使用共享对象可有效地支持大量的细粒度的对象。 享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,同时还容易造成内存溢出,那怎么避免呢?就是享元模式提到的共享技术。我们先来了解一下对象的内部状态和外部状态。要求细粒原创 2018-01-30 12:24:11 · 388 阅读 · 0 评论 -
设计模式23-桥梁模式
一 桥梁模式的定义 桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模式,其定义如下:将抽象和实现解耦,使得两者可以独立地变化。 通用类图如下:我们先来看桥梁模式中的4个角色。Abstraction——抽象化角色:它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。Implementor——实现化角色:它是接口或者原创 2018-01-30 15:13:21 · 613 阅读 · 1 评论