
设计模式
HealerJean.
欢迎大家加我为好友,一起探讨代码的乐趣
展开
-
设计模式之UML
前言博主github博主个人博客http://blog.healerjean.com来源于自己买的一本书 图解设计模式 ,博主这里做了一份笔记记录UML :统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言1、类图1、类与层次结构1、三个框 依次是 类名、字段名、方法名2、空心箭头表现了子类和父类之间的层次关系 ,...原创 2019-08-23 16:51:40 · 206 阅读 · 0 评论 -
设计及模式之单例模式
前言单例对象(Singleton)是一种常用的设计模式。在Java应用中, 单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式...原创 2019-11-13 19:35:41 · 195 阅读 · 0 评论 -
设计模式之一致性_Decorator装饰器模式_装饰边框和内容的一致性
前言博主github博主个人博客http://blog.healerjean.com1、解释假如现在有一块蛋糕1、如果只涂上奶油,其他什么都不加,就是奶油蛋糕。2、如果加上草莓,就是草莓奶油蛋糕。3、如果再加上一块黑色巧克力板,上面用白色巧克力写上姓名,然后插上代表年龄的蜡烛,就变成了一块生日蛋糕。像这样不断地为对象添加装饰的设计模式被称为Decorator模式 ,Decorato...原创 2019-08-26 15:24:32 · 190 阅读 · 0 评论 -
设计模式之访问数据结构_Visitor访问者模式_访问数据结构并处理数据
前言博主github博主个人博客http://blog.healerjean.com1、解释您在朋友家做客,您是访问者,朋友接受您的访问,您通过朋友的描述(这就是数据),然后对朋友的描述做出一个判断(相当于处理数据),这就是访问者模式。把结构和数据分开,编写一个访问者,去访问数据结构中的元素,然后把对各元素的处理全部交给访问者类。这样,当需要增加新的处理时候,只需要编写新的 访问者类,让...原创 2019-08-26 15:25:12 · 177 阅读 · 0 评论 -
设计模式之访问数据结构_ChainOfReponsibility责任链模式_推卸责任
前言博主github博主个人博客http://blog.healerjean.com1、解释场景:假设现在我们去公司领取资料。1、首先我们向公司前台打听要去哪里领取资料,她告诉我们应该去“营业窗口”。2、然后等我们到了“营业窗口”后,又被告知应该去“售后部门”。3、等我们好不容易赶到了“售后部门”,4、又被告知应该去“资料中心”,5、因此最后我们又不得不赶到“资料中心”。像这样...原创 2019-08-26 15:25:46 · 231 阅读 · 0 评论 -
设计模式之简单化_Facade外观模式_简单窗口
前言1、解释外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。程序这个东东呢,肯定会总是越来越大,程序中的类会越来越多,而且他们相互关联,这回导致程序结构也变得复杂,我们在车里数量庞大的类之间错综复杂的关系,可以为它单独提供一个去医院看病,可能要去挂号、门...原创 2019-08-26 15:26:16 · 239 阅读 · 0 评论 -
设计模式之简单化_Mediator中介者模式_只有一个仲裁者
前言博主github博主个人博客http://blog.healerjean.com1、解释想象一个乱糟糟的开发小组的工作状态,组员之间虽然在一起协同工作,但是意见难以统一,总是相互指挥,导致工作进度滞后。这时候,就需要一个仲裁者。所有的组员将自己的情况汇报给仲裁者,仲裁者会从团队的整体考虑,然后下达指令。仲裁者负责统一大家的意见。这样,团队的交流过程就变成了组员向仲裁者报告,仲裁者向组员...原创 2019-08-26 15:26:50 · 204 阅读 · 0 评论 -
设计模式之管理状态_Observer观察者模式_发送状态变化通知
前言博主github博主个人博客http://blog.healerjean.com1、解释Observer 是进行观察的人,也就是观察者的意思,当观察对象状态发生变化的时候回通知给观察者,观察者模式适用于根据对象状态进行相应处理的场景这个模式具体看 SpringBoot_ApplicationEvent实现异步调用1、实例代码有点像踢皮球1.1、观察者抽象类父类public a...原创 2019-08-26 15:27:19 · 274 阅读 · 0 评论 -
设计模式之管理状态_Memento备忘录模式_保存对象状态
前言博主github博主个人博客http://blog.healerjean.com1、解释在使用面向对象编程的时候,我们需要先保存实力的相关状态信息,然后再撤销时候,可以根据所保留的信息恢复到原来的状态备忘录模式大家肯定都见过,比如在玩游戏的时候有一个保存当前闯关的状态的功能,会对当前用户所处的状态进行保存,当用户闯关失败或者需要从快照的地方开始的时候,就能读取当时保存的状态完整地恢复...原创 2019-08-26 15:27:54 · 299 阅读 · 0 评论 -
设计模式之一致性_Composite组合模式_容器和内容的一致性(对象包含对象)
前言博主github博主个人博客http://blog.healerjean.com1、解释组合模式 一般用来描述 整体 与 部分 的关系,它将对象组织到树形结构中,最顶层的节点称为 根节点,根节点下面可以包含 树枝节点 和 叶子节点,树枝节点下面又可以包含 树枝节点 和 叶子节点。如下图所示:[外链图片转存失败(img-uL1Lf563-1566550768885)(D:\study...原创 2019-08-23 16:59:51 · 582 阅读 · 0 评论 -
设计模式之分开考虑_Strategy策略模式_多个策略实现同一个接口
前言博主github博主个人博客http://blog.healerjean.com1、解释策略模式,其实我们最开始借出Java就开始使用了,就是一个接口,多个实现方法,按照具体业务说呢,就是业务名字相同,但是具体处理不同2、实例代码场景:给定两个数,使用随机的策略,讲这两个数进行计算 ,开放式思维,哈哈 如下2.1、策略接口/** * @author HealerJean ...原创 2019-08-23 16:59:10 · 507 阅读 · 0 评论 -
设计模式之适应设计模式_Iterator模式_一个一个遍历
前言博主github博主个人博客http://blog.healerjean.com标题上已经写明了,就是一个一个遍历1、示例程序1.1、场景讲书放Book到书架上BookShelf,然后使用iterator遍历讲书的名字信息打印出来1.2、UML图[外链图片转存失败(img-ecg2u7lL-1566550398888)(https://raw.githubusercontent...原创 2019-08-23 16:53:48 · 159 阅读 · 0 评论 -
设计模式之适应设计模式_Adapter模式_加一个适配器以便复用
前言博主github博主个人博客http://blog.healerjean.com1、Adapter模式有两种1、类适配器模式(使用继承的适配器)2、对象适配器 (使用委托的适配器)1.2、适配器模式和装饰器模式的区别装饰器与适配器都有一个别名叫做 包装模式(Wrapper),它们看似都是起到包装一个类或对象的作用,但是使用它们的目的很不一一样。适配器模式将一个接口转变成另一...原创 2019-08-23 16:54:32 · 173 阅读 · 0 评论 -
设计模式之交给子类_TemplateMethod模模式_讲具体处理交给子类.
前言博主github博主个人博客http://blog.healerjean.com1、解释父类中定义处理流程的框架,在子类中实现具体处理的模式 ,这种模式我们经常会遇到,项目中太多了就是说一个父类中有一些方法有不同的实现,需要多个子类来处理。2、业务场景看下面2中的内容 ,也就是说多个业务有重合的地方,重合的地方交给父类,子类继承,也可重写1、示例程序1.1、UML图[外链图...原创 2019-08-23 16:54:58 · 198 阅读 · 0 评论 -
设计模式之交给子类_FactoryMethod模式_将实例生成交给子类
1、解释 1、将实例的生成交给子类2、父类决定实例的生成方式,但并不决定所要生成的具体的类 工厂方法(Factory Method)模式的意义是1、定义一个创建产品的工厂接口(内部可能有多个产品)2、将产品实例生成的交给工厂子类3、我们通过子类工厂选择需要的产品,小米用到好处:使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式是简单工厂模式的衍生,...原创 2019-08-23 16:55:37 · 171 阅读 · 0 评论 -
设计模式之生成实例_Prototype复制模式_通过复制生成实例
前言博主github博主个人博客http://blog.healerjean.com1、业务场景**当创建对象的代价比较大的时候,采用这种模式, **实现方式、 容器,clone2、实例代码12.1、被复制的抽象对象@Data@ToStringpublic abstract class Shape implements Cloneable { public ...原创 2019-08-23 16:56:42 · 129 阅读 · 0 评论 -
设计模式之生成实例_Builder模式_组装复杂的实例
前言博主github博主个人博客http://blog.healerjean.com1、业务场景**使用多个简单的对象一步一步构建成一个复杂的对象, **比如:肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,我们可以定义一个组装Meal类,和一个建造者类Builder调用这个组装类来制作一个复杂的对象1.1、外观模式和建造者模式的区别1.1.1、Builder...原创 2019-08-23 16:57:16 · 224 阅读 · 0 评论 -
设计模式之生成实例_AbstractFactory模式_将关联零件组装成产品
前言博主github博主个人博客http://blog.healerjean.com抽象工厂的工作是将抽象零件构件组装成抽象产品,我们不关心零件的具体实现,而是只关心接口,我们仅适用该接口将零件组装成产品1、示例程序1、示例代码1.1、抽象工厂 Factory (抽象类或者接口)/** * 表示抽象工程的类 制作 鼠标,键盘 */public abstract class F...原创 2019-08-23 16:57:49 · 173 阅读 · 0 评论 -
设计模式之分开考虑_Bridge模式_将类的抽象部分和实现部分分离
前言博主github博主个人博客http://blog.healerjean.com文章内容采用自博客 https://www.cnblogs.com/WindSun/p/10260547.html1、模式动机 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:1.1、第一种方...原创 2019-08-23 16:58:36 · 1040 阅读 · 0 评论 -
设计模式之管理状态_Status状态模式_用类保存状态
前言博主github博主个人博客http://blog.healerjean.com1、解释1、对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2、代码中包含大量与对象状态有关的条件语句:一个操作中含有庞大的多条件(if else 或switch case)语句,且这些条件依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。 //运行动作 @Overr...原创 2019-08-26 15:28:31 · 617 阅读 · 0 评论