![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
奋斗小菠萝
深入一些,原来更美好
展开
-
【设计模式】01-访问者模式
目录 什么是访问者模式 为什么要用访问者模式 访问者模式组成 访问者模式的缺点 什么是访问者模式 对象将自己的内部属性暴露给访问者,从而在实现具体功能时,交给访问者。 为什么要用访问者模式 各个具体的对象元素有自己的特异实现,同时针对不同的需求变化,也会有不同的实现方式。 这个时候不同的访问者就相当于不同的需求。所以只需要针对不同的需求定制化不同的访问者,以此来实现不...原创 2019-02-16 14:48:39 · 101 阅读 · 0 评论 -
【设计模式】12-单例模式
目录 什么是单例模式 为什么要用单例模式 单例模式组成 什么是单例模式 单例模式确保类只有一个实例对象。 为什么要用单例模式 针对于只需要创建一次的类,也可以减少内存开销,和优化共享资源的访问。 单例模式组成 单例类 public class Singleton { private static final Singleton ourInstance ...原创 2019-04-20 15:32:06 · 71 阅读 · 0 评论 -
【设计模式】15-组合设计模式
目录 什么是组合模式 为什么要用组合模式 组合模式组成 什么是组合模式 由每一个单元节点,组合成一个整体节点,这种对单个节点的结构存储和对整体节点的存储和处理逻辑保持一致的设计模式便是组合设计模式。 为什么要用组合模式 应用中有很多场景会用到组合模式,例如树状存储的结构,比如多级菜单,每一层级菜单的处理都可以抽象保持一致。比如企业的组织架构,员工都具有一些共同的属性,而区...原创 2019-05-12 14:20:17 · 104 阅读 · 0 评论 -
【设计模式】17-命令模式
目录 什么是命令模式 为什么要用命令模式 命令模式组成 什么是命令模式 命令模式是解除‘行为请求者’和'行为执行者'之间紧耦合的一种设计模式。将请求包裹成对象执行调用,被调用对象根据具体命令寻找具体执行者执行相应命令,并返回执行结果。 为什么要用命令模式 在很多情况下执行的请求和执行对象直接存在紧耦合关系,执行请求者必须深入执行者内部,从而在应对需求的变更时显得更加困难。...原创 2019-05-25 20:41:35 · 60 阅读 · 0 评论 -
【设计模式】16-适配器模式
目录 什么是适配器模式 为什么要用适配器模式 适配器模式组成 什么是适配器模式 将一个类的接口转换为调用方所能用的另一种接口,从而使得原本不适配的接口能适配调用,一起工作。这就是适配器模式。 为什么要用适配器模式 往往很多情况下,因为双方接口的不一致,现有系统可能无法运用新组件接入,而对现有的系统进行改造代价是昂贵的,从而需要对接入的新组件进行适配,以适用于现有系统,从而...原创 2019-05-18 20:25:28 · 70 阅读 · 0 评论 -
【设计模式】18-享元模式
什么是享元模式 将对象抽象成可变的内部状态和不可变的外部状态,通过共享对象中的外部状态,在使用时特定的修改内部状态。从而支持大量的细粒度对象,提升系统性能,避免内存溢出。 为什么要用享元模式 当需要生成大量重复相似的对象,而容易导致内存溢出时,可以考虑使用享元模式。 享元模式组成 抽象享元角色 public abstract class Flyweight { /...原创 2019-06-07 13:40:17 · 56 阅读 · 0 评论 -
【设计模式】19-状态模式
什么是状态模式 对象中的状态变更引起其状态相关的行为发生变更。将状态进行封装,使状态的变更在具体状态类中进行传递,从而控制各个状态下的行为。 为什么要用状态模式 当一个对象中有很多状态,且各个状态引起不同的行为切换时,可避免繁乱的分支判断,即可以用状态模式,将行为封装,并通过状态模式中的环境角色封装状态切换。 状态模式组成 状态行为接口 public interface ...原创 2019-06-07 15:52:06 · 84 阅读 · 0 评论 -
【设计模式】20-备忘录模式
目录 什么是备忘录模式 为什么要用备忘录模式 备忘录模式组成 什么是备忘录模式 保存对象某一时刻的状态,并在需要时恢复之前保存的状态。如字面所述,备忘录模式就是一个对象的备份模式。 为什么要用备忘录模式 备忘录模式运用于需要备份并恢复状态数据的场景。甚至可以保存多个保存点状态,并指定恢复到相应的节点。 备忘录模式组成 备忘录角色 public class M...原创 2019-06-15 16:37:56 · 59 阅读 · 0 评论 -
【设计模式】23-桥梁模式
什么是桥梁模式 桥梁模式一头连接抽象,一头连接实现。将原本在一起的逻辑通过抽象与实现解耦,使高层抽象的结构不随实际实现变化而变化。 为什么要用桥梁模式 应对实现多变的场景,桥梁模式能把外部逻辑抽象出去,从而将内部实现与外部抽象逻辑分离。 桥梁模式组成 外部抽象角色 public abstract class AbstractShell { private Implem...原创 2019-07-07 17:10:58 · 86 阅读 · 0 评论 -
【设计模式】21-代理模式
目录 什么是代理模式 为什么要用代理模式 代理模式组成(动态代理) 什么是代理模式 代理模式是提供一种代理机制来控制对被代理对象的访问的控制的设计模式。 为什么要用代理模式 通过代理模式可以很好的对被代理对象控制,在调用被代理对象实现核心业务逻辑的情况下,也可以很好的对业务前后做一些辅助工作,而无须修改被代理对象。 代理模式组成(动态代理) 抽象对象 pub...原创 2019-06-30 11:17:13 · 96 阅读 · 0 评论 -
【设计模式】14-抽象工厂模式
目录 什么是抽象工厂模式 为什么要用抽象工厂模式 抽象工厂模式组成 需要注意的几点 什么是抽象工厂模式 抽象工厂模式是针对多种抽象对象统一使用的创建模式,使得客户端可以在不指定具体产品的情况下,创建具体对象。 为什么要用抽象工厂模式 抽象工厂模式具有良好的封装性,使得客户端高层不必关心具体的对象是如何创建的,只需要知道通过哪个工厂类来创建。而具体的对象创建逻辑交给具体的...原创 2019-05-03 16:57:44 · 87 阅读 · 0 评论 -
【设计模式】13-工厂方法模式
目录 什么是工厂方法模式 为什么要用工厂方法模式 工厂方法模式组成 什么是工厂方法模式 定义一个创建对象的接口,由子类根据参数动态创建对应的对象实例。 为什么要用工厂方法模式 想一下,在实际项目需求中,起初我们会告诉只需要实现具体某个几个功能,于是我们为每一个需求创建一个类,并根据条件在代码里new出对应的对象。但是需求总是来的猝不及防,于是我们为了快速应当需求,不得不在...原创 2019-04-27 20:13:49 · 70 阅读 · 0 评论 -
【设计模式】11-原型模式
目录 什么是原型模式 为什么要用原型模式 原型模式组成 什么是原型模式 原型模式指的是用一个对象作为原型模板,来创建其他新的对象 为什么要用原型模式 当我们需要创建对象时,可以new一个对象。但是重新创建一个新对象是非常耗费资源的,尤其是当这个对象需要准备的资源比较多时。那这个时候有没有其他好的办法呢。如果有一个模板类的对象,当需要创建一个新的对象时,能基于这个模板对象快...原创 2019-04-14 15:20:42 · 71 阅读 · 0 评论 -
【设计模式】02-观察者模式
目录 什么是观察者模式 为什么要使用观察者模式 观察者模式组成 有什么需要注意的地方 什么是观察者模式 观察者模式又可以说成是发布订阅模式,字面理解就是被观察者触发动作通知到所有观察者。类比于群主在QQ群里发个消息,所有在群里的成员都能收到消息。 为什么要使用观察者模式 我们知道具体的对象负责它所管辖的范围内的功能,但是需求的实现往往需要多个关系有因果的发生,简单的来说...原创 2019-02-17 22:11:22 · 99 阅读 · 0 评论 -
【设计模式】04-中介者模式
目录 什么是中介者模式 为什么要使用中介者模式 中介者模式组成 需要注意的几点 什么是中介者模式 从字面上来看,就很容易理解中介者模式就是为了解决对象之间错综复杂的耦合关系的一种设计模式。 为什么要使用中介者模式 首先,明确一点,一般在项目里一个对象是不可能孤立存在的,即一个类不存在和其他类没有任何联系的情况,如果有,大概这个类也没有存在的必要了。软件逻辑最终是为了完成...原创 2019-02-23 19:40:24 · 91 阅读 · 0 评论 -
【设计模式】05-门面模式
目录 什么是门面模式 为什么要用门面模式 门面模式组成 需要注意的几点 什么是门面模式 门面模式如其名称所述,是内部功能对外的用户界面。就如同门面一样,将自身内在的复杂功能实现隐藏,而对外暴露简单的用户界面。 为什么要用门面模式 在项目里当一个系统要去完成一个功能时,很多情况下都需要其多个子系统服务联合才能完成。而对应外界的调用方来说,是不需要关心你系统内部子系统之间是...原创 2019-02-25 15:49:17 · 77 阅读 · 0 评论 -
【设计模式】03-建造者模式
目录 什么是建造者模式 为什么要用建造者模式 建造者模式组成 一些补充说明 什么是建造者模式 致力于将一系列相似又特异的对象的复杂的创建细节所隐藏的一种创建类设计模式。 为什么要用建造者模式 类比于手机代工厂。比如有一个手机代工厂 代工A和B两种品牌手机,且AB手机各有有两种型号,这里假设型号分别为A1,A2,B1,B2。工厂为了加工手机,开了两个车间,分别为车间A和车...原创 2019-02-20 11:25:18 · 139 阅读 · 0 评论 -
【设计模式】06-解释器模式
目录 什么是解释器模式 为什么要用解释器模式 解释器模式的组成 解释器模式的缺点 什么是解释器模式 解释器模式是为自定义语法解释的一种方案设计模式。 为什么要用解释器模式 当在项目中定义了特定的自定义语法表达式,并需要解析执行计算执行时,就可以考虑解释器模式。比如定义加减运算表达式,形如a+b+c,并传递相应的参数值,而对表达式进行解析,最终计算出结果。以a+b+c这个...原创 2019-03-02 17:18:44 · 82 阅读 · 0 评论 -
【设计模式】07-装饰模式
目录 什么是装饰模式 为什么要用装饰模式 装饰模式组成 需要注意的几点 什么是装饰模式 动态的给对象添加额外的功能。 为什么要用装饰模式 将功能动态的添加给指定对象,以便给对象添加指定额外的功能。 装饰模式组成 抽象对象 public abstract class Component { public abstract void doSomeTh...原创 2019-03-03 13:28:03 · 128 阅读 · 0 评论 -
【设计模式】08-策略模式
目录 什么是策略模式 策略模式组成 什么是策略模式 策略模式其实是对象多态的应用。由实现同一接口的一组算法组成,通过上层决策放决定调用何种算法,即策略来完成相应的计算处理。 策略模式组成 策略算法抽象接口 public interface Strategy { void doSomething(); } 具体策略算法实现 public cla...原创 2019-03-17 23:32:50 · 64 阅读 · 0 评论 -
【设计模式】09-责任链模式
目录 什么是责任链模式 为什么要用责任链模式 责任链模式组成 什么是责任链模式 如名字所示,责任链模式旨在将各个处理对象连接成一条链,从而使其与请求者解耦,使请求者不必关心真正需要哪个具体对象做处理,只需要从责任链的统一入口进入,交予链上的各个对象处理,若处理对象不能完全处理,则交予链上的下一个对象来处理,直至整个处理流程结束。 为什么要用责任链模式 责任链的核心在“链”...原创 2019-03-30 12:53:19 · 69 阅读 · 0 评论 -
【设计模式】10-模板方法模式
目录 什么是模板方法模式 为什么要用模板方法模式 模板方法模式组成 什么是模板方法模式 模板方法就是在抽象父类里定义一个模板方法,并且已经按照一定的逻辑组合了其他普通抽象方法。而具体子类只需要实现这些特异的普通方法,就可以按一套标准的模板流程,开启模板方法。 为什么要用模板方法模式 模板方法从实现上来说,应该是比较简单的一种模式,从各种开源框架中也能经常看到模板方法模式的...原创 2019-04-05 12:44:32 · 69 阅读 · 0 评论 -
【设计模式】22-迭代器模式
什么是迭代器模式 相信做java的同学对jdk中的 Iterator 接口应该不会陌生。jdk中的几乎所有的集合都实现了Iterator接口。迭代器提供了一种模式去访问容器,可以让我们不直接操作容器本身,而实现对容器的遍历。 迭代器模式组成 抽象迭代器 public interface Iterator { /** * 遍历下一个 * @return Object...原创 2019-07-06 22:07:33 · 59 阅读 · 0 评论