结构型模式
文章平均质量分 75
结构型模式分为组合与继承
非凡的小笨鱼
这个作者很懒,什么都没留下…
展开
-
一起走进组合模式
目录一.介绍二.UML类图三.具体代码四.使用场景五.优点 一.介绍 组合模式(Composite Pattern)属于结构型模式。组合模式又叫作部分整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示整体-部分的关系,color=‘green’>使用户对单个对象和组合对象具有一致的访问性。组合模式有透明方式和安全方式两种实现方式 二.UML类图 1.透明方式 抽象节点中定义了规范,客户端无需区别叶子节点和树枝节点,使用方便 叶子节点本来无add、remove、getChild方法,但是因原创 2021-12-25 15:29:44 · 525 阅读 · 1 评论 -
一起走进门面模式
一.介绍 门面模式(Facade Pattern)属于结构型模式。门面模式又叫作外观模式,通过给多个复杂的子系统提供一个门面(高层接口),使这些子系统更加容易的被访问,客户端与门面直接通信,封装/隐藏背后子系统的细节与复杂度 二.UML类图 未使用门面模式 使用门面模式 三.具体代码 业务代码 class Facade { private SubSystem1 subSystem1 = new SubSystem1(); private SubSystem2 subSystem2 = n原创 2021-12-25 13:36:01 · 406 阅读 · 0 评论 -
一起走进装饰器模式
目录一.介绍二.UML类图三.具体代码四.装饰器模式与代理模式对比五.使用场景六.在JDK中的应用七.在Spring中的应用八.优点 一.介绍 装饰器模式(Decorator Pattern)属于结构型模式。在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能),不同装饰类之间可以灵活的排列组合 二.UML类图 三.具体代码 业务代码 //抽象装饰 public abstract class Decorator implements Component{ protected原创 2021-12-22 22:25:15 · 268 阅读 · 0 评论 -
一起走进桥接模式
目录一.介绍二.场景理解三.UML类图四.具体代码五.优缺点六.使用场景 一.介绍 桥接模式(Bridge Pattern)属于结构型模式。用于将抽象与其实现解耦,使得二者可以独立变化。桥接模式使用组合/聚合替代继承,从而连接功能层面与实现层面,把强关联转为弱关联之后进行双向扩展 适配器模式可以在抽象层不变的情况下,对实现进行扩展和变化;而桥接模式可以在抽象和实现两个维度独立扩展和变化 二.场景理解 JPA是ORM框架的抽象,或者说是Java提供的持久化标准,而Hibernate与TopLink则是ORM框原创 2021-12-21 21:52:07 · 2164 阅读 · 0 评论 -
一起走进适配器模式
目录一.介绍二.场景约束三.UML类图四.具体代码五.使用场景六.适配器模式与代理模式对比七.在JDK中的应用八.在Spring中的应用 一.介绍 适配器模式(Adapter Pattern)属于结构型模式。将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。例如电源转换头、数据线转换头、翻译等。适配器模式分为类适配器和对象适配器两种实现方式 二.场景约束 适配者和目标接口都已经存在,不易修改接口代码 抽象接口希望复用已有组件的逻辑 三.UML类图 类原创 2021-12-20 21:40:52 · 327 阅读 · 0 评论 -
一起走进享元模式
一.介绍 享元模式(Flyweight Pattern)运用共享技术有效地减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它通过共享已存在的对象来大幅度的减少对象的创建,避免大量相似对象的开销,适用于频繁创建享元对象的场景 二.场景 下面的图片是众所周知的俄罗斯方块中的一个个方块,如果在俄罗斯方块这个游戏中,每个不同的方块都是一个实例对象,这些对象就要占用很多的内存空间,我们可以使用享元模式来节省内存使用 三.UML类图 四.具体代码 1.本案例中使用HashMap数据结原创 2021-12-14 21:03:06 · 272 阅读 · 0 评论 -
一起走进代理模式
一.介绍 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口 二.UML类图 三.代理模式分类 Java中的代理按照代理类生成时机不同分为静态代理和动态代理,静态代理的代理类在编译器就生成,而动态代理的代理类在Java运行时动态生成。动态代理又分为JDK代理和CGLib代理。 四.静态代理 业务代码 /** * 静态代理 */ public interface Pay { vo原创 2021-12-12 14:48:54 · 381 阅读 · 0 评论