java设计模式学习
文章平均质量分 69
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
NULL_ZGX
这个作者很懒,什么都没留下…
展开
-
Java设计模式学习-备忘录模式
备忘录模式核心是:保存某个对象内部状态的拷贝,这样以后就可以将该对象回复到原先的状态。接下来用代码来实现1),创建原发器类/** * 原发器类 */public class Emp { private String name; private int age; private int salary; /** * 进行备份操作,并返...原创 2019-01-01 12:54:47 · 214 阅读 · 0 评论 -
Java设计模式学习-观察者模式
使用场景:聊天室程序的创建,服务器创建好后,A,B,C 三个客户端连上来公开聊天。A向服务器发送数据,服务器端聊天数据改变。我们希望将这些聊天数据分别给其他在线的客户。也就说,每个客户端都需要更新服务器得到数据。 大家一起玩CS游戏时,服务器需要将每个人的方位变化发给所有的客户。我们可以把多个订阅者,客户称之为观察者,需要同步给多个订阅者的数据封装到对象中,称之为目标。观察者核心是:...原创 2019-01-01 11:29:53 · 316 阅读 · 0 评论 -
Java设计模式学习-状态模式
使用场景如下:酒店系统中,房间的状态变化: 已预定 已入住 空闲 状态模式核心是:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题接下来用代码来实现以上酒店的场景:1),创建状态的接口类/**酒店状态接口类 * @author 晓电脑 */public interface State { void changeStatu...原创 2018-12-31 12:14:38 · 402 阅读 · 0 评论 -
Java设计模式学习-模板方法模式
模式方法模式介绍:模板方法模式是编程中经常用到模式 。它定义了一个操作中的算法骨架,将将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义定义该算法的某些特定的步骤。 核心: 处理某个流程的代码已经都具备, 但是其中某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移给子类完成。即 : 处理步骤父类中定义好 , 具体实现延迟到子类中...原创 2018-12-30 21:21:37 · 149 阅读 · 0 评论 -
Java设计模式学习-策略模式
如下使用场景:某个市场人员接到单后的报价策略(CRM系统中常见问题)。报价策略很复杂,可以简单作如下分类: 1),普通客户小批量报价 2),普通用户大批量报价 3),老客户小批量报价 4),老客户大批量报价要实现以上的报价系统,一般程序员都会想到这样来做,如下 /**未使用策略模式 * @author 晓电脑 * 缺点: 违反了java的开闭原则 * 如果需要修改打折...原创 2018-12-30 20:34:49 · 210 阅读 · 0 评论 -
Java设计模式学习-命令模式
介绍命令模式:将一个请求封装为一个对象 , 从而使我们可用不同的请求对客户端进行参数化 , 对请求排队或记录请求日志 , 以及支持可撤销的操作 。 也称之为 : 动作Action模式 , 事物transction模式结构Command 抽象命令类 ConcreteCommand 具体命令类 Invoker 调用者/请求者 -- 请求的发送者 , 它通过命令对象来执行请求 。一个调用...原创 2018-12-30 19:25:44 · 141 阅读 · 0 评论 -
Java设计模式学习-中介者模式Mediator
核心:如果一个系统中对象之间的联系呈现为网状结构 , 对象之间存在大量多对多关系 , 将导致关系及其复杂 , 这些对象称为 --同事对象 。 我们可以引入一个中介者对象 , 使各个同事对象只跟中介者对象打交道 , 将复杂的网状结构化解为简单的星状结构如下 中介者类图如下 接下来用代码实现中介者模式1),创建部门类接口 并创建...原创 2018-12-28 08:52:23 · 180 阅读 · 0 评论 -
Java设计模式的学习-责任链模式
Java的23中设计模式分类三大类:行为型模式 -- 关注系统中对象之间的相互交互 , 研究系统在运行时对象与对象之间的相互通信和协作,进一步明确对象的职责 创造型模式 -- 关注对象的创建过程 结构型模式 -- 关注对象和类的组织责任链模式定义:将能够处理同一类的对象连成一条链,所提交的请求沿着链传递 , 链上的对象逐个判断是否有能力处理该请求 , 如果能处理则处理 , 如果不能则...原创 2018-12-26 08:39:15 · 178 阅读 · 0 评论 -
Java设计模式学习-享元模式FlyWeight
使用场景内存属于稀缺资源,不要随便浪费 , 如果有很多个完全相同或相似的对象 ,我们可以通过享元模式,节省内存。享元模式的核心:享元模式以共享的放式高效地支持大量细粒度对象的重用。 享元对象能做到共享的关键是区分了内部状态和外部状态。 1),内部状态 :可以共享 ,不会随着环境变化而改变 。 2),外部状态: 不可以共享,会随着环境变化而改变。 例如下面这个围棋 ...原创 2018-12-25 08:51:58 · 263 阅读 · 0 评论 -
Java设计模式学习-外观模式/门面模式
迪米特法则(最少只是原则):一个软件实体应当尽可能少的与其他实体发生相互作用。外观模式核心:为子类系统提供统一的入口, 封装子系统的复杂性 ,便于客户端调用 。 使用外观模式模拟注册公司的流程,uml图如下 1),创建工商局类/**工商局接口类 * @author 晓电脑 */public interface GongShangJu { voi...原创 2018-12-24 08:22:19 · 239 阅读 · 0 评论 -
Java设计模式学习-装饰模式Decorator
装饰模式职责动态的为一个对象增加新的功能 装饰模式是一种用于代替继承的技术, 无需通过继承增加子类就能扩展对象的新功能,使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀装饰模式实现细节1),Component 抽象构建角色 真实对象和装饰对象有相同的接口 , 这样,客户端对象就能就能以与真实对象相同的放式装饰对象交互 2),ConcreteComponent具...原创 2018-12-23 10:11:14 · 165 阅读 · 0 评论 -
Java设计模式学习-桥接模式bridge
我们可以用多重继承结构实现下图的关系 这样存在一个问题:如果要增加一个新的电脑类型, 智能手机 ,则要增加各个品牌下面的类 。 如果要增加一个新的品牌 , 也要增加各种电脑类型的类 。 违反单一职责原则 -- 一个类:联想笔记本 ,有俩个引起这个类变化的原因。 我们使用多重继承来实现上图:package com.tuogo.bridge;/**电脑...原创 2018-12-20 22:00:37 · 566 阅读 · 1 评论 -
Java设计模式学习-代理模式
代理模式核心作用:通过代理,控制对对象的防问 可以详细控制访问某个(某类)对象的方法 , 在调用这个方法前做前置处理 , 调用这个方法后做后置处理 。 (即 : AOP的微观实现)代理模式(proxy pattern)核心角色 -- 定义代理角色和真实角色的公共对外方法 。 真实角色 -- 实现抽象角色 , 定义真实角色所要实现的业务逻辑,供代理角色调用 。 -- 关注真正的业务逻...原创 2018-12-20 08:42:28 · 234 阅读 · 0 评论 -
Java设计模式学习-适配器模式
结构型模式:核心作用: 是从程序结构上实现松耦合 , 从而可以扩大整体类结构 , 用来解决更大的问题 。 分类 适配器模式 代理模式 桥接模式 装饰模式 组合模式 外观模式 享元模式 在生活的场景如 假如 笔记本要用usb接口连接一个圆形键盘接口 绘图如下 ...原创 2018-12-19 09:00:08 · 297 阅读 · 0 评论 -
Java设计模式学习-原型模式Prototype
原型模式:通过 new 产生一个对象需要非常繁琐的数据准备或访问权限 , 则可以使用原型模式 。 就是 java 中的克隆技术 , 以某个对象为原型 , 复制出新的对象 。 新的对象具备原型对象的特点。 优势有: 效率高 (直接克隆 , 避免了重新执行构造器过程步骤)。 克隆类似于 new , 但是不同于new 。 new 创建新的对象属性采用的是默认值 。 克隆出来的对象属性值完全和原...原创 2018-12-18 09:58:46 · 191 阅读 · 0 评论 -
Java设计模式学习-建造者模式
建造者模式的本质分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于 : 某个对象的构建过程复杂的情况下使用 。 由于实现了构建和装配的解耦 。不同的构建器 , 相同的装配 , 也可以做出不同的对象 。相同的构造器 , 不同的装配顺序也可以做出不同的对象 。 也就是实现了构建算法 , 装配算法的解耦 , 实现了更好的复...原创 2018-12-17 20:55:51 · 200 阅读 · 0 评论 -
Java设计模式学习-抽象工厂模式
抽象工厂模式用来生产不同产品族的全部产品 。 (对于增加新的产品,无能为力,支持增加产品族) 抽象工厂模式是工厂方法模式的升级版本 , 在有多个业务品种 , 业务分类时 , 通过抽象工厂模式产生需要的对象是一种非常好的解决方式 。 1),创建发动机类接口,并创建它的俩个实现类如下 /**发动机接口 * @author...原创 2018-12-16 14:45:31 · 184 阅读 · 0 评论 -
Java设计模式学习-工厂方法模式
工厂方法模式要点:为了避免简单工厂模式的缺点 , 不完全满足OCP 。 工厂出那个方法模式 和 简单工厂模式 最大不同在于 , 简单工厂模式只有一个 (对于一个项目或者一个独立模块而言 ) 工厂类, 而工厂方法模式有一组实现了相同接口的工厂类 。 1), 创建Car类接口/**创建车类 根类接口 * @author 晓电脑 */public interface Car {...原创 2018-12-16 13:52:17 · 185 阅读 · 0 评论 -
Java设计模式学习-简单工厂模式
工厂模式实现了创建者和调用者的分离 。 详细分类又分为三类 1), 简单工厂模式 -->用来生产同一等级结构中的任意产品。(对于增加新产品 ,需要修改已有的代码) 2),工厂方法模式 -->用来生产同一等级结构中固定产品 。 (支持增加任意产品) 3),抽象工厂模式 -->用来生产不同产品品类的全部产品 。(对于增加新的产品,无能无力 , 支持增加产品族)...原创 2018-12-16 12:02:29 · 245 阅读 · 0 评论 -
Java设计模式学习-单例模式的漏洞及解决办法
通过对单例模式进行了学习,我们已经对单例模式已经有了一定的认识,但是不知道你们发现没有,也存在几个问题反射可以破解上一篇博客中的单例模式,其中不包含枚举单例模式。 反序列化也可以破解上一篇中的单例模式,其中也不包含枚举但离开模式。 那我们来看下1), 反射是如何破解单例模式的(下面主要是用懒汉单例模式来做演示) /** 懒汉式 单例模式 * @author 晓电脑 *...原创 2018-12-16 10:41:46 · 370 阅读 · 0 评论 -
Java设计模式学习--单例模式
单例模式 核心作用 : 保证一个类只有一个实例 , 并且提供一个访问该实习的全局访问点 . 常见的应用场景 :Windows 的 Tsask Manager (任务管理器) 就是典型的单例模式 当你打开任务管理器的时候,只要你能不关闭任务管理器页面,你电脑只能显示一个任务管理器页面 。 项目中 , 读取配置文件的类 , 一般也只有一个对象。 没有必要每次使用配置文件数据,每...原创 2018-12-15 14:28:17 · 249 阅读 · 0 评论