![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
xiaoluo5238
从现在开始
展开
-
java-设计模式-备忘录模式
设计模式-备忘录模式 本质:保存和恢复对象状态(部分状态) 不破坏封装性的前提下,获取一个对象的内部状态,并在该对象外保存这个状态。 Memento模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者保护的属性只是众多属性中的一小部分。 典型例子: 游戏大战Boss前会保存记录。UML图:下面用一个30岁的中年人想穿越回1...原创 2020-03-22 17:39:26 · 148 阅读 · 0 评论 -
java-设计模式-模板方法
设计模式-模板方法 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法通过把不变的行为搬到父类,去除子类中的重复代码来提现他的优势。 模板方法其实就是我们抽象类的写法,抽象类中有两种方法,一种就是已经实现了的,一种就是还没有实现的。已经实现了的就是通用的方法,还没有实现就是每个子类不同的...原创 2020-03-06 10:28:21 · 107 阅读 · 0 评论 -
java-设计模式-组合模式
设计模式-组合模式 将对象组合成树形结构来表示 “部分-整体”的层次结构。 叶子节点 和 支节点,支节点可以有支节点和叶子结点,叶子结点则不能有。 例子: 文件 -> 文件夹1(文件夹11(文件111),文件12)、文件2 公司、分公司、公司部门公司分公司和子公司的例子:公司抽象类:import java.util.C...原创 2020-03-05 18:39:05 · 122 阅读 · 0 评论 -
java-设计模式-迭代器模式
设计模式-迭代器模式 提供一种方法顺序访问一个聚合对象中各个元素,而有不暴露该对象的内部表示 本质:控制访问聚合对象的元素,透明访问元素这个模式其实我们很熟悉了,因为java中就有迭代器,而且我们用的也很多。先上个类图:用java List的迭代器解释下这个类图吧。Aggregate 是个聚集的抽象类,对应的是ListConcreteAggregate具体...原创 2020-03-05 16:53:10 · 136 阅读 · 0 评论 -
java-设计模式-命令模式
设计模式-命令模式 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,可撤销的操作。 行为的请求者 和 行为的执行者 解耦 典型例子:服务员(调用者 invoker)、厨师(接收者),菜单(命令)命令模式的结构也很简单,先认识下面的三个角色: invoker 调用命令的人 command、Concr...原创 2020-03-05 13:30:12 · 116 阅读 · 0 评论 -
java-设计模式-代理模式
设计模式-代理模式 为其它对象提供一种代理已控制对这个对象的访问 虚代理:根据需要来创建开销很大的对象 (懒加载) 远程代理:用不同地址空间上代表同意对象 保护代理:控制对原始对象的访问 例如订单创建之后,只有创建者可以对订单进行修改。 代理 在调用真实的对象前后可做权限校验等等。 代理模式的本质:控制对象访问 代理模式和适...原创 2020-03-04 21:14:22 · 108 阅读 · 0 评论 -
java-设计模式-中介者模式
设计模式-中介者模式 用一个中介对象来封装一些了的对象交互。各对象不需要显示的相互引用。 中介就是所有的调和者,符合最小知道原则,把交互功能几种在中介者身上。 优点: 灵活性高,因为将同事类进行了解耦,使其不必有关联性; 降低了类的复杂度,将一对多转化成了一对一; 缺点: 过度集中化,这是中介者模式潜在的缺点。如果同...原创 2020-03-04 17:54:51 · 188 阅读 · 0 评论 -
java-设计模式-建造者模式
建造者模式在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象建造者模式适合:1:复杂对象2:对象的构建有顺序要求,要求先构建part1再构建part2等先看类图:下面举两个例子,一个例子就是比较严格按照类图来写的,另外一个就是更为通用的对象的建造。例子1-有指挥者-产品的制作。这个产品需要先制作 head,才能制作body和tail。我们先看...原创 2020-03-04 12:28:01 · 160 阅读 · 0 评论 -
java-设计模式-适配器模式
适配器模式是 将一个类的接口 转换 成 客户 需要的接口的一种模式。比如原来有个接口的参数是 1、2、3 , 现在客户端想添加一个新的参数 4,那么旧的接口是不能直接用,那么就可以使用适配器模式,利用组合的模式或继承的方式实现。其实我觉得适配器模式 并没有一种常规的写法,主要是他的思想,把不兼容的类进行兼容,对扩展开放,对修改关闭。来个类图:下面有个实例,我们中国的电压...原创 2020-03-03 23:36:09 · 81 阅读 · 0 评论 -
java-设计模式-原型模式-基于流的复制
原型模式 可以理解为深复制对象,之前开发的时候自己经常用,但是不知道它还有这个名字。简答示例:类中有一个 复制对象的方法。/** * 订单对象 */public class OrderObject { private String id;//订单id private String name;//订单名 private double price;//价格...原创 2020-03-03 17:07:40 · 124 阅读 · 0 评论 -
java-设计模式-装饰者模式
设计模式-装饰者模式 动态地给一个对象添加一些额外的职责。 组件 -> 具体组件 -> 装饰者(组件) ->具体装饰者 Component :定义了一个可以被动态添加功能的接口 Decorator :持有一个Component对象的引用,并且定义了一个和Component保持一致的接口。 Con...原创 2020-03-02 13:31:55 · 109 阅读 · 0 评论 -
java-设计模式-策略模式
策略模式 和 状态模式有点像,但是比状态模式稍微比较简单。状态模式的状态之间是可以互相转换的,但是策略模式之间是相互独立的。策略模式 是把每个策略(解决问题的方法)独立成类,调用者只需要调用抽象策略,具体的实现策略以具体的情况而定。策略的理解可以是一系列可以解决同一类问题的方法。比如 小明去上班这个问题,策略可以有:走路、骑车、公交车、自驾,它们都可以解决从 小明家 到 公...原创 2020-03-01 21:07:08 · 161 阅读 · 0 评论 -
java-设计模式-状态模式-模拟审批流程-二级审批
设计模式的状态模式,就是把状态独立成一个类,代替传统复杂的if-else。网上还有非常多关于状态模式的介绍,不过很多都是点到即止,例子我理解的也不是很清楚。设计模式只是一种思路,掌握好这个思路就可以,实现有非常多种方法。接下来我有项目经典问题-审批流程,来使用下状态模式。基本的审批流程如下: 提交表单 -> 一级审批 -> 二级审批 -> 结束那对应的我也设...原创 2020-03-01 15:44:23 · 8290 阅读 · 5 评论 -
java-设计模式-单例-有限多例
java单例的实现有多种,这里介绍简单的几种:单例都是要求 构造方法私有化1:内部类模式(推荐使用)特点:能实现懒加载、是线程安全的,不用锁实现/** * 内部类实现单例 * 0:只初始化一个 * 1:懒加载 * 2:线程安全 */public class InnerSingle{ private InnerSingle(){ System.o...原创 2020-02-28 17:52:36 · 228 阅读 · 0 评论 -
java-设计模式-观察者模式 java自带
观察者模式-发布订阅模式一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象当主题对象发送变化时会通知所有观察者观察者自动更新自己java本身有自带观察者模式实现java.util.Observable 被观察者 setChanged();//数据改变 notifyObservers();//发起通知,这个需要与setChanged()一起使用,使用这个 观察者...原创 2020-02-25 11:13:11 · 146 阅读 · 0 评论