![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java23种设计模式
林海静
周全尽至,方可抵达。
展开
-
Java23种设计模式【1】----》单例模式
一、原理保证一个类只有一个对象,并且提供一个全局的访问点二、应用场景三、优点内存占用小 四、最好拥有的特点线程安全,调用效率高,懒加载----》推荐使用静态内部类实现五、常见的五种单例模式1、饿汉式调用频繁推荐饿汉式优点:采用类加载是类初始化的时候创建的,是天然线程安全的模式。缺点:但如过没有被调用,就浪费了资源,因为对象已经创建了测试:...原创 2018-10-29 21:12:28 · 186 阅读 · 3 评论 -
Java23种设计模式【14】----》迭代器模式(iterator)
一、场景当有很多对象需要遍历时,就用迭代器模式。二、开发中的场景List/Set实现了iterator接口,所以自带排序方法;参考链接:https://blog.csdn.net/biexiaofei/article/details/77031003 三、 代码实现1、定义一个迭代器接口2、自定义聚合类获取一个迭代器定义一个迭代器内部...原创 2018-11-04 21:36:41 · 151 阅读 · 0 评论 -
Java23种设计模式【15】----》中介者模式(Mediator)
一、场景几个角色之间直接打交道,会比较乱使用中介者模式,变成如下:二、核心把网状结构解耦变成1对多的关系三、中介者模式的本质四、开发中的场景五、UML图六、代码实现 场景公司下面有三个部门:财务部,市场部,研发部;设总经理来管理这三个部门,部门间通信直接找总经理,总经理再通报各个部门;1、中介者接口2、部门接口...原创 2018-11-04 22:10:19 · 132 阅读 · 0 评论 -
Java23种设计模式【16】----》命令模式(command)
项目中用到的不多一、介绍有一个命令的发送者,再抽象一个新的类,对发的请求和命令缓存处理后(记录日志,记录操作前状态进行批处理),再转发给执行者执行命令,这个过程就是命令模式。例如:数据库事物的底层就是命令模式数据库的事物具有原子性:即接收到命令后,依据命令模式,将这些命令缓存起来,如果那个命令执行失败,就进行回滚,不转发给执行者;二、结构三、开发中的场景四、...原创 2018-11-04 22:34:19 · 140 阅读 · 0 评论 -
Java23种设计模式【17】----》解释器模式(Interpreter)
项目中基本用不到如果有特定的语法结构,自定义语法,可以好好看此设计模式去写相关编译器和解释器;如果想要开发一种新的语言时,开发解释器和编译器设计时,解释器模式必须使用;一、介绍 二、开发中场景的场景...原创 2018-11-04 22:44:37 · 131 阅读 · 0 评论 -
Java23种设计模式【18】----》访问者模式(Visitor)
应用范围非常窄,了解即可一、场景处理一个接口下有很多不同的对象,对不同对象有不同的处理方式,这时需要用到访问者模式;二、定义 三、开发中的场景xml文档中有各种不同的子元素,所以用到访问者模式;...原创 2018-11-05 10:07:13 · 134 阅读 · 0 评论 -
Java23种设计模式【19】----》策略模式(strategy)
一、场景普通代码实现:二、定义针对复杂的场景 三、类图实现了算法和实现的分离,适应后期更复制的情况 四、 本质五、开发中常见的场景六、代码实现1、算法统一接口2、算法实现(构成算法族)算法实现1算法实现2算法实现3算法实现43、上下文类,管理算法4、测试...原创 2018-11-05 20:26:53 · 135 阅读 · 0 评论 -
Java23种设计模式【22】----》观察者模式(Observer)
一、广播的机制一对多的关系;**群发消息的时候**;如我们听电台,我们是消息订阅者,电台是消息发送者(目标)。二、场景一个人说的话给了服务器,服务器再把这句话给其他人;二个人对话或多人对话都要经过服务器;总结:**即目标给多个观察者发送消息**;三、核心四、Java中jdk封装的观察者模式代码实现:目标对象:观察者:测...原创 2018-11-07 18:18:05 · 1171 阅读 · 2 评论 -
Java23种设计模式【23】----》备忘录模式(memento)
一、场景恢复到以前的状态。如word编辑时突然断电,当重新打开时,提示是否恢复,点击恢复可恢复原来的内容;二、核心三、结构四、开发中常见的场景五、代码实现1、源发器类2、备忘录类3、负责人类管理备忘录对象另:4、测试结果:六、类图 七、优化,利用栈来保存备忘录 ...原创 2018-11-07 18:53:20 · 120 阅读 · 0 评论 -
Java23种设计模式【20】----》模板方法模式(template method)
一、场景流程骨架清楚,但具体实现还不清楚如吃饭,吃饭流程都知道,但具体吃什么饭不清楚二、模板方法模式介绍定义好骨架,但具体某个方法该怎么调不知道三、核心四、方法回调(钩子方法)五、什么时候用模板方法模式六、开发中的场景七、代码实现1、模板类案例:银行办理业务**钩子方法:未实现的方法,交由子类来实现**业务方法:模板方法中的调...原创 2018-11-05 20:50:24 · 170 阅读 · 0 评论 -
Java23种设计模式【13】----》责任链模式(Chain of responsibility)
一、定义原理:将多个同一功能的对象串起来,一个对象调用下一个对象,形成链的结构。二、场景 如果写if/else语句会导致结构复制不利于后期维护,则采用责任链模式;三、开发中的场景四、代码实现请假流程审批1、封装请假的基本信息2、创建抽象类供审批者继承3、责任链上的审批者主任经理总经理:4、测试责任链的组织关...原创 2018-11-04 18:12:45 · 121 阅读 · 0 评论 -
Java23种设计模式【12】----》享元模式(FlyWeight)
一、应用场景享:共享元:数据如果存在很多相同或相似的对象,可以通过享元模式,合并为一个,供所有人调用,以起到节省内存的作用,但也是以时间换空间,节省了内存,但增加了运行时间。二、核心享元模式要经常和工厂模式搭配使用如:围棋棋子颜色大小形状相同,但位置不同,所以 颜色大小形状是内部状态,位置是外部状态三、 实现UML图:四、开发中的应用场景...原创 2018-11-04 16:22:20 · 153 阅读 · 0 评论 -
Java23种设计模式【11】----》外观模式
一、迪米特法则(最少知识原则)如泡茶:不需要亲自和开水茶叶打交道,而是和茶馆服务员打交道。 二、原理原理:封装,供自己或别人进行调用如一段通用的代码进行封装成方法;尽可能少的和子系统打交道,而是和一个统一的出口打交道;把功能封装起来,调起来方便; 三、开发中的场景封装好这些工具类便于我们直接使用。四、案例说明注册公司一般方法:使用外观模式...原创 2018-11-04 15:34:45 · 147 阅读 · 0 评论 -
Java23种设计模式【4】----》建造者模式
*******类名以builder结尾的基本都是构建者模式*******一、适应场景建造的对象流程很复杂,包含很多对象,这个时候就可以用到建造者模式。1、需要很多零件(工厂模式创建)2、按照特定的模式组装起来二、开发中应用场景三、本质四、代码实现1、创建目标--》飞船2、创建零件--》发动机、逃逸塔、轨道舱接口:创建实现类:...原创 2018-10-31 18:45:30 · 117 阅读 · 0 评论 -
Java23种设计模式【2、3】----》工厂模式
一句话总结:保证创建大量对象,并且统一到工厂中处理。一、分类二、作用使项目容易扩展和维护分工三、没有工厂模式的写法调用者和创建者在一起:四、工厂模式的使用1、简单工厂模式创建者(工厂):调用者(不用关心创建者怎么创建对象):缺点:新加新的对象只能修改程序,违背了面向对象的对修改关闭对扩展开放的原则2、工厂方法模式创建者...原创 2018-10-30 21:01:29 · 212 阅读 · 0 评论 -
Java23种设计模式【5】----》原型模式prototype
一、场景创建对象比较耗时的时候,可以拷贝原型,再进行修改;是基于内存的操作二、原理原型模式=客户模式=拷贝模式包括浅克隆和深克隆浅克隆:只复制原型,克隆对象和原型共同指向原型的对象属性深克隆:将原型的属性也进行复制三、开发中的应用场景四、Java中原型模式的使用注:此处重写的是Object类中的clone()方法;Object类中的clone()...原创 2018-11-01 19:20:28 · 116 阅读 · 0 评论 -
Java23种设计模式【前言】--总体说明
23种模式分类:模式:固定的套路一、创建型模式一句话总结:帮我们创建对象创建型模式中的重点模式:单例模式,简单工厂模式,原型模式二、结构型模式对程序的整体结构起到更大的作用,帮助我们实现程序的松耦合,对程序的维护和升级起到很大的作用,有利于以后的扩展。 三、行为型模式 不常用:解释器模式,命令模式,访问者模式 ...原创 2018-11-04 16:28:57 · 109 阅读 · 0 评论 -
Java23种设计模式【6】----》适配器adapter模式
一、生活中的场景适配器相当于一个转接口。如:手机的充电器。插座是被适配的对象,充电器是适配器,手机的充电接口是目标接口。二、什么是适配器模式三、模式中的角色四、工作中的场景六、Java中的适配器场景输入\输出字节和字符流的转化对象七、代码实现1、类适配器方式被适配的对象(插座):目标类(手机):手机的USB充电接口:...原创 2018-11-01 20:32:17 · 111 阅读 · 0 评论 -
Java23种设计模式【7】----》代理模式(Proxy patern)
一、生活中的场景代理公司,经纪人,中介二、Java程序中的场景三、核心作用举例:歌手和经纪人客户需要歌手来唱歌,不找歌手,而是找歌手的经纪人。经纪人:负责面谈、合同起草、签字、收预付款、安排机票和车辆、安排唱歌、收尾款等统一流程的事歌手:负责唱歌故经纪人是歌手的代理。所以:某个(某类)对象:歌手调用方法:指歌手唱歌前置处理:负责面谈、合同起草、签...原创 2018-11-03 22:08:59 · 199 阅读 · 0 评论 -
Java23种设计模式【8】----》桥接模式(bridge)
一、使用场景场景:电脑分类多层继承结构模型:存在问题:当新增具体品牌电脑时,需要新增类来实现;即:解决方法:将类型和品牌分开,通过一个有另一的引用来实现关联,即桥接模式;二、桥接模式的核心要点由于Java没有多继承机制,所以桥接模式用于处理这种多继承的情况!用组合代替继承关系!!!如定义一个联想笔记本电脑,是通过组合的方式,而不是直接建一个联想笔记本电脑的类...原创 2018-11-03 22:58:59 · 178 阅读 · 0 评论 -
Java23种设计模式【9】----》组合模式(composite)
一、继承和组合的区别继承:A类继承B类,A类拥有B类的一切;组合:A类定义B类的属性,A拥有了B,则拥有了B的所有方法;二、组合模式使用场景处理树形结构:XML解析,html解析,Windows文件系统三、组合模式核心四、组合模式工作流程分析五、开发中的应用场景六、代码说明组合模式1、抽象组件:容器组件(父节点):叶子节点:...原创 2018-11-04 11:20:47 · 137 阅读 · 0 评论 -
Java23种设计模式【10】----》装饰模式(decorator)
一、原理装饰对象和原本对象分离,通过组合方法即装饰对象中创建原本对象的引用;如:墙壁,和能挂衣服的墙壁;墙壁是原本对象,装饰对象定义挂钩对象,同时有墙壁的引用;这样装饰类就表示能挂衣服的墙壁;车,和飞行车、人工智能车;车是原本对象,装饰对象定能飞的属性或方法,同时有车的引用;这样装饰类就表示能飞的车;二、职责 三、实现细节四、Java开发中的场景其中IO...原创 2018-11-04 15:17:33 · 124 阅读 · 0 评论 -
Java23种设计模式【21】----》状态模式(state)
一、场景不同的状态对应不同的行为,考虑使用状态模式二、核心三、结构四、开发中的场景五、代码实现状态图说明:代码实现:1、状态接口state2、定义state的实现类空闲:已预订:已入住:3、上下文类context标志当前处于哪个状态,维持不同状态的切换如果是银行系统,这个context类根据金额不同切换...原创 2018-11-07 17:08:35 · 163 阅读 · 0 评论