
设计模式
文章平均质量分 53
CaptainCats
悟已往之不谏、知来者之可追。
展开
-
设计模式-访问者模式
访问者模式属于行为型模式封装一些作用于元素的操作,在某些数据结构(集合)中,在不改变数据结构的前提下,重新定义作用于元素的操作。访问者模式的基本工作原理是,在被访问的类里面加一个对外提供接待访问者的接口。包含抽象访问者、具体访问者、抽象元素、具体元素、结构对象五种角色。...原创 2022-07-24 20:14:54 · 331 阅读 · 0 评论 -
设计模式-模板模式
模板模式属于行为型模式允许子类在不改变算法结构的情况下重新定义算法中的某些步骤,这里算法结构就是模板,模板也就是一系列行为的集合。一个抽象类公开定义了执行它方法的模板,它的子类按照需要重写方法的实现,但是调用将通过抽象类中定义的模板调用。它包含抽象模板、具体实现两种角色。...原创 2022-07-23 13:36:52 · 243 阅读 · 0 评论 -
设计模式-策略模式
策略模式属于行为型模式策略模式创建标识各种策略的对象和一个环境对象,策略对象改变环境对象的行为。它包含抽象策略、具体策略、环境类三种角色。我觉得和状态模式没什么不同,硬要说区别那就是状态模式通过方法切换状态,而策略模式则是用构造方法指定策略。...原创 2022-07-22 22:04:48 · 301 阅读 · 0 评论 -
设计模式-空对象模式
***抽象对象-书*@Title**@date2022年7月21日}原创 2022-07-21 22:34:13 · 450 阅读 · 0 评论 -
设计模式-状态模式
状态模式属于行为型模式存在一些场景,对象的行为受状态约束,状态模式中,我们会创建标识各种状态的对象,和一个行为随着状态对象的改变而改变的环境对象,封装了不同状态转换下对象不同的行为。可以用来替代ifelse。它包含抽象状态类、具体状态类、环境类三种角色。环境类的状态独立出去成为单独的具体状态类。...原创 2022-07-20 21:24:37 · 265 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式属于行为型模式观察者模式定义了一种机制,多个观察者对象注视某一个主题对象,在主题对象状态变化时,会同步所有观察者对象。它包含抽象主题、具体主题、抽象观察者、具体观察者四种角色。...原创 2022-07-19 18:23:21 · 360 阅读 · 0 评论 -
设计模式-备忘录模式
备忘录模式属于行为型模式备忘录模式保存对象的某个状态,以便在适当的时候恢复对象,是在不破坏封装的前提下,捕获一个对象的内部状态,在对象之外保存这个状态。包含有原发器、备忘录、看管人三种角色。...原创 2022-07-17 18:36:20 · 199 阅读 · 0 评论 -
设计模式-中介者模式
中介者模式属于行为型模式中介者模式用一个中介对象封装一系列的交互,对象间通信不需要显式地相互引用,使其耦合松散。如果对象之间的关系呈现出网状结构,对象之间存在大量多对多关系,关系极其复杂,这些对象被称为同事对象。包含抽象中介、具体中介者、抽象同事、具体同事四种角色。...原创 2022-07-16 21:37:54 · 357 阅读 · 0 评论 -
设计模式-迭代器模式
迭代器模式属于行为型模式迭代器模式用于顺序访问集合中的元素,将遍历的责任交给迭代器,而不是集合,不会暴露集合的内部结构。包含抽象迭代器、抽象集合、具体集合、具体迭代器四种角色。...原创 2022-07-15 22:04:26 · 307 阅读 · 0 评论 -
设计模式-解释器模式
***抽象解释器-表达式接口*@Title**@date2022年7月13日/***这就是解释*@date2022年7月13日**@paramcontext上下文、就是环境,这里我们用map}原创 2022-07-15 18:56:15 · 353 阅读 · 0 评论 -
设计模式-命令模式
命令模式中,请求被转换为包含请求所有信息的对象,实现请求方和接收方的松耦合。包含有抽象命令、命令执行者、具体命令、请求者四种角色。命令执行者ToyCar玩具小汽车具体命令CommandLeft遥控器按钮CommandStop遥控器按钮CommandRight遥控器按钮请求者Telecontroller遥控器测试运行...原创 2022-07-13 22:17:17 · 142 阅读 · 0 评论 -
设计模式-责任链模式
责任链模式中,处理者持有对下家的引用,形成一条链,请求在这个链上传递,直到某一个处理者处理此请求,或者不处理一直到责任链结束。责任链可能是一条线,也可能是一条环链。包含有抽象处理者、具体处理者两种角色。我们以不同级别的日志打印为例具体处理者DebugLogInfoLogErrorLog测试运行...原创 2022-07-12 22:25:06 · 169 阅读 · 0 评论 -
设计模式-享元模式
它尝试重用现有的对象,若没有现成的,则创建对象主要为了减少创建对象的数量,以减少内存占用,常用在需要缓冲的场景,例如Java的常量池。包含抽象享元、具体享元类、享元工厂三个角色。具体享元面条饺子米饭享元工厂食堂测试运行...原创 2022-07-12 21:37:54 · 303 阅读 · 0 评论 -
设计模式-外观模式
外部与子系统的通信通过一个统一的外观类进行,来隐藏系统的复杂性,使该系统更加易用。包含有子系统、外观类两个角色。磁盘内存外观类测试运行原创 2022-07-11 22:30:33 · 148 阅读 · 0 评论 -
设计模式-装饰器模式
这种模式创建了一个装饰类,向一个现有的对象添加新的功能,同时又不改变其结构,装饰器模式和代理模式很像,代理模式中被访问对象是由代理类创建,而装饰器模式中被访问对象是由访问者传入的。包含抽象角色、具体角色、抽象装饰类、具体装饰类四个角色。具体角色抽象装饰类具体装饰类测试运行...原创 2022-07-10 21:36:03 · 217 阅读 · 0 评论 -
设计模式-代理模式
某些情况下,一个对象不能或不想直接访问另一个对象,需要给被访问对象提供一个代理,以控制访问者对该对象的访问,代理对象代表被访问对象的功能,作为访问者和被访问对象之间的媒介。包含抽象主题、具体主题、代理类三个角色,具体主题、代理类都应该实现抽象主题。我们以遥控汽车为例玩具小汽车(具体主题)遥控器(代理类)访问对象运行静态代理中,当被代理对象方法增加时,代理类需要同步改动,这是比较麻烦的。运用Java的反射机制,生成被代理对象,代理类不需要关心抽象主题中有哪些方法。运行...原创 2022-07-07 21:51:00 · 167 阅读 · 0 评论 -
设计模式-组合模式
设计模式-组合模式组合模式属于结构型模式它有一个抽象对象,这个对象包含一个类型为自身的数组,用来表达部分以及整体层次,组合树形结构的对象。树干、树枝、鸟窝的组成都可以是木材,木材就是那个抽象对象。Treepackage com.superv.resource.design.composite;import java.util.ArrayList;import java.util.List;import com.alibaba.fastjson.JSON;/** * @author原创 2021-01-28 23:08:47 · 147 阅读 · 1 评论 -
设计模式-过滤器模式
设计模式-过滤器模式过滤器模式属于结构型模式它使用一个或多个标准,即过滤器来过滤一组对象,来得到满足标准的对象。场景在一组汽车中,我们要过滤出品牌是吉利,并且颜色是红色的汽车。实例汽车Carpackage com.superv.resource.design.filter;/** * @author yangwei * @description 汽车 * * @date 2020年12月26日-下午4:54:27 */public class Car { /** *原创 2020-12-26 17:20:02 · 274 阅读 · 0 评论 -
设计模式-桥接模式
设计模式-桥接模式桥接模式属于结构型模式它用于把抽象和实现解耦,使他们可以相对独立地变化。适用于一个实现,需要对应多个变化的抽象维度。核心在于使用组合的方式来解决继承的问题。避免出现像笛卡尔积那样数量庞大的类个数。场景比如说吃饭,吃和喝是两个独立变化的维度。它们都可以有各自的实现类。如果要使用继承的方式来解决一顿晚餐的话,需要炸鸡继承啤酒beer,然后dinner再继承炸鸡chicken,或者香肠继承啤酒beer,然后dinner再继承香肠sausage,这就是两个类了,如果有m种吃原创 2020-12-24 21:05:07 · 257 阅读 · 4 评论 -
设计模式-适配器模式
设计模式-适配器模式适配器模式属于结构型模式系统中,常常需要将一些’现存的对象’放到新的环境中,而新环境要求的接口现对象不能满足。不能舍弃现有对象不用去创建新对象,那样代价会太大。场景我们现有1000伏和2000伏的输电线路(源角色),但是家用环境中,需要220伏的电压(目标角色),中间要用到变压器(适配器角色)。实例抽象电压接口package com.superv.resource.design.adapter;/** * @author yangwei * @describ原创 2020-12-22 22:39:17 · 120 阅读 · 0 评论 -
设计模式-建造者模式
设计模式-建造者模式建造者模式属于创建型模式它用于创建多组成的复杂对象。包含有产品、抽象建造者、具体建造者、指挥者四个角色。大致是这个样子:实例产品汽车package com.superv.resource.design.builder;public class AutoProduct { /** * 品牌 */ private String brand; /** * 发动机 */ private String partA; /** * 变速箱原创 2020-11-10 20:18:42 · 320 阅读 · 0 评论 -
设计模式-单例模式
设计模式-单例模式单例模式属于创建型模式它只允许一个实例的存在,提供访问其唯一对象实例的方式,避免频繁创建与销毁实例。实现方式单例模式实现方式有枚举、私有构造器两类。私有构造器这种实现方式最直观。1 懒汉式直到使用前才会创建实例。package com.superv.resource.design.single;public class Singleton { /** * Singleton对象唯一实例 */ private static Singleton insta原创 2020-11-03 19:10:37 · 337 阅读 · 0 评论 -
设计模式-抽象工厂模式
设计模式-抽象工厂模式抽象工厂模式属于创建型模式它是工厂模式的延伸。在工厂模式中,工厂是具体的,产品是抽象的,现在工厂也是抽象的,抽象工厂中的工厂相当于工厂模式中的产品。可能会有一点绕口,不过没理解也没关系,这里的代码量不多,一共七个类,一起写下来,大家肯定会对抽象工厂模式有一个自己的认识,包教包会。实例抽象生物类public interface Species { /** * 生物的行为 */ void action(); }抽象工厂类public interf原创 2020-10-29 20:15:34 · 163 阅读 · 0 评论 -
设计模式-工厂模式
设计模式-工厂模式工厂模式属于创建型模式它提供了一种基于"输入"的创建对象方式。应用场景超类存在多个子类时创建对象,创建过程比较复杂的对象,适合使用工厂模式,过程简单,不需要使用工厂模式。实例动物类package com.superv.supervresource.design.factory;/** * @author yangwei * @describition 动物 * * @time 2020年10月26日-下午7:10:32 */public interface原创 2020-10-26 19:27:50 · 207 阅读 · 4 评论