状态模式
摘要:状态设计模式允许对象在内部状态改变时改变它的行为。 为什么要使用状态设计模式? 状态设计模式可将对象的状态行为封装到单独的状态对象中,并将对象的动作委托到当前状态的对象。通过这样的方式实现封装变化、对扩展开放、对修改关闭以增强代码可读性、扩展性、维护性的目的。 需求:万能糖果机公司委托设计一种糖果机
阅读全文
posted @
2022-04-18 10:36
溪水静幽
阅读(46)
推荐(0) 编辑
访问者模式
摘要:定义:封装某些作用于某种数据结构中各元素的操作,可以在不改变数据结构的前提下定义作用于这些元素的新的操作 类型:行为类模式 代码如下: class A { public void method1(){ System.out.println("我是A"); } public void method2(
阅读全文
posted @
2022-04-18 09:13
溪水静幽
阅读(31)
推荐(0) 编辑
命令模式
摘要:命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或者交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式是对命令的封装。命令模式把发出命令的
阅读全文
posted @
2022-04-13 08:29
溪水静幽
阅读(95)
推荐(0) 编辑
备忘录模式
摘要:备忘录模式即快照模式(Snapshot Pattern)或Token模式是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来
阅读全文
posted @
2022-04-11 18:46
溪水静幽
阅读(612)
推荐(0) 编辑
解释器模式
摘要:解释器模式是类的行为模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 系统的结构图如下所示: 角色如下所示: (1)抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口。接口主要是一
阅读全文
posted @
2022-04-09 09:34
溪水静幽
阅读(343)
推荐(0) 编辑
迭代器模式
摘要:迭代器模式提供一种方法顺序访问聚合对象中的各个元素而又不暴露其内部的表示。把游走的任务放在迭代器上而不是聚合上。简化聚合的接口和实现,让责任各得其所。 迭代器模式涉及到以下几个角色: 抽象迭代器(Iterator)角色:定义出遍历元素所需的接口 具体迭代器(ConcreteIterator)角色:实
阅读全文
posted @
2022-04-07 10:04
溪水静幽
阅读(35)
推荐(0) 编辑
桥接模式
摘要:桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。即实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合起来,减少了各维度间的耦合。 不必要的继承导致类爆炸 汽车可按品牌分(BMT,BenZ,Land Rove
阅读全文
posted @
2022-04-05 08:22
溪水静幽
阅读(93)
推荐(0) 编辑
组合模式
摘要:组合(Composite Pattern)模式(整体-部分(Part-Whole)模式),是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。 组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点
阅读全文
posted @
2022-04-04 10:12
溪水静幽
阅读(38)
推荐(0) 编辑
享元模式(Flyweight)
摘要:享元(Flyweight)模式的定义:有效地支持大量细粒度对象的复用,通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。 优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。 其主要缺点是: 为了使对
阅读全文
posted @
2022-04-03 16:48
溪水静幽
阅读(552)
推荐(0) 编辑
装饰者模式
摘要:装饰者模式指的是在不改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。装饰者可以动态地将责任附加到对象上。 装饰者模式组成结构 抽象构件 (Component):给出抽象接口或抽象类,以规范准备接收附加功能的对象。 具体构件 (ConcreteComponent):定义将要接收附加功能的类。
阅读全文
posted @
2022-04-01 11:50
溪水静幽
阅读(96)
推荐(0) 编辑
外观模式
摘要:外观模式(Facade)称为"门面模式"。定义了一个高层、统一的接口,外部通过这个统一的接口对子系统中的一群接口进行访问。 优点: 1.简化调用流程,客户端不需要知道子系统的实现,提高了安全性,符合“迪特米原则”。 2.提高灵活性,降低用户类和子系统类的耦合度,实现了松耦合。 3.更好的划分访问层次
阅读全文
posted @
2021-12-26 11:52
溪水静幽
阅读(38)
推荐(0) 编辑
责任链模式
摘要:场景: 代码中存在大量的if else嵌套,耦合性很高 需求: 1、减少代码中的if else,提高可读性 2、新增逻辑简单,不影响原有逻辑,拓展性好 3、多个拦截器场景,可以方便调用顺序,低耦合 责任链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦
阅读全文
posted @
2020-05-01 10:18
溪水静幽
阅读(101)
推荐(0) 编辑
适配器
摘要:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的结构 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。 类适配器模式 类的适配器模式把适配的类的API转换成为目标类的API 模式所涉及的角色有: ● 目标
阅读全文
posted @
2018-11-16 22:18
溪水静幽
阅读(104)
推荐(0) 编辑
中介者模式
摘要:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实
阅读全文
posted @
2018-10-22 19:37
溪水静幽
阅读(143)
推荐(0) 编辑
Java Proxy和CGLIB动态代理原理
摘要:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。同时代理对象可以调用被代理对象的方法,并对其进行增强。可以总结为代理对象 = 增强代码 + 目标对象(原对象) 静态代理的代理关系在编译时就确定,而动态代理的代理关系是在运行期确定的。 用Java动态代理 需要用到Proxy类的两
阅读全文
posted @
2018-09-27 10:02
溪水静幽
阅读(196)
推荐(0) 编辑
模板模式
摘要:定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。任务大体上可分为两部分,排序和打印。先把打印功能完成,排序功能另找人做。 abstract class
阅读全文
posted @
2018-09-25 11:55
溪水静幽
阅读(107)
推荐(0) 编辑
原型模式
摘要:定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 创建类模式 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 实现Cloneable接口。 在java语言有一个Cloneable接口,它的作用只有一个,就是在
阅读全文
posted @
2018-09-25 09:32
溪水静幽
阅读(90)
推荐(0) 编辑
建造者模式
摘要:定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:创建类模式 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成
阅读全文
posted @
2018-09-24 22:36
溪水静幽
阅读(90)
推荐(0) 编辑
抽象工厂
摘要:定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,用来创建一组相关或者相互依赖的对象。与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程
阅读全文
posted @
2018-09-23 18:36
溪水静幽
阅读(108)
推荐(0) 编辑
简单工厂模式
摘要:简单工厂模式:定义一个Factory类,可以根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类。 简单工厂模式:只需要一个Factory类。 简单工厂模式:又称为静态工厂模式(Static Factory Pattern),Factory类为静态类或包含静态方法。 简单工厂模式:实质是由一
阅读全文
posted @
2018-09-21 21:53
溪水静幽
阅读(89)
推荐(0) 编辑