文章分类 -  后端 / 设计模式

23种设计模式
摘要:### 单例模式 #### 饿汉式 缺点:不管使用与否,类装载时就完成实例化 优点: 实现简单 ```java package com.example.designer.singleton; /** * @version 1.0 * @create 2022/10/1 00:08 * @descri 阅读全文
posted @ 2022-10-01 01:17 King-DA 阅读(27) 评论(0) 推荐(0)
摘要:代理模式: 1.为一个对象提供一个替身对象,以控制这个对象的访问。即通过代理对象访问目标对象,这样的好处是:可以在目标对象实现的基础上,增强额外的功能操作,和拓展目标对象的功能。 2.被代理的对象可以是远程对象、创建开销大的对象或者需要安全控制的对象。 3.代理模式有不同的形式,主要有三种:静态代理 阅读全文
posted @ 2021-12-28 09:36 King-DA 阅读(18) 评论(0) 推荐(0)
摘要:享元模式 也叫做蝇量模式:运用共享技术有效地支持大量细粒度的对象 2.常用于底层开发,解决系统的性能问题,像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个。 3.享元模式能够解决 阅读全文
posted @ 2021-12-27 01:00 King-DA 阅读(62) 评论(0) 推荐(0)
摘要:外观模式 通过定义一个一致的接口,用以屏蔽内部子系统的的细节,使得吊用端只需要跟这个接口发生调用,而无需要关心这个子系统的内部细节。 工作原理 外观模式:也叫做过程模式,外观模式为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层的接口,这个接口使得这个一子系统 1. 模式的结构 外观(F 阅读全文
posted @ 2021-12-26 23:46 King-DA 阅读(80) 评论(0) 推荐(0)
摘要:迪米特法则 1.一个类应该对其他对象保持最少的了解 2.类与类关系越密切,耦合度越大 3.迪米特法则又叫做最少知道法则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么发拶,都尽量将逻辑封装在累的内部,对外除了提供的public方法,不对外暴露任何信息 4.迪米特法则还有更简单 阅读全文
posted @ 2021-12-26 13:48 King-DA 阅读(34) 评论(0) 推荐(0)
摘要:开闭原则 1.一个软件实体,模块和函数应该对拓展开放(对提供方),对修改关闭(对适用方)。用抽象构建框架,用实现拓展细节 2.当然建需要变化时,尽量通过拓展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 编程中遵循其他原则,以及使用设计模式的目的就是遵循开闭原则。 阅读全文
posted @ 2021-12-26 01:33 King-DA 阅读(25) 评论(0) 推荐(0)
摘要:依赖倒置原则 依赖倒置原则: 1.高层模块不应该依赖底层模块,二者都应该依赖其抽象(接口、抽象类) 2.抽象不应该依赖细节,细节应该依赖抽象 3.依赖倒置的中心思想就是面向接口编程。 4依赖倒置原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的 阅读全文
posted @ 2021-12-24 00:58 King-DA 阅读(57) 评论(0) 推荐(0)
摘要:接口隔离原则 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上 就是将每个接口拆分成最小的单位。 阅读全文
posted @ 2021-12-21 23:43 King-DA 阅读(23) 评论(0) 推荐(0)
摘要:单一职责 对类来说的,就是一个类只负责一项职责,如果类a负责两个不同的职责:职责1、职责2,当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1和A2. 阅读全文
posted @ 2021-12-21 01:13 King-DA 阅读(34) 评论(0) 推荐(0)
摘要:责任链模式 很多对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 1.handler:抽象的处理者。定义了一个处理请求的接口,同时含义另外Handler ConcreteHandlerA,B是具体的处理者,处理它 阅读全文
posted @ 2021-12-18 01:20 King-DA 阅读(25) 评论(0) 推荐(0)
摘要:空对象模式 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该 阅读全文
posted @ 2021-12-17 00:21 King-DA 阅读(27) 评论(0) 推荐(0)
摘要:桥接模式 1.指的是:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变 2.是一种结构型设计模式 3.Bridge模式基于类的最小原则,通过封装、聚合及继承等行为让不同的类承担不同的职责,它主要是将抽象和行为实现分离开,从而保证各个部分的独立性以及应对他们的功能拓展。 在开始学java的时 阅读全文
posted @ 2021-12-17 00:09 King-DA 阅读(37) 评论(0) 推荐(0)
摘要:游戏角色状态恢复问题 游戏角色状态恢复问题。 游戏角色有攻击力和防御力,在大战boss前保存自身的攻击力和防御力,当大战boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态。 传统设计方案 问题分析: (1)一个对象,就对应一个保存对象状态的对象,这样当我们游戏的对象很多时,不利于管理,开销 阅读全文
posted @ 2021-11-21 22:35 King-DA 阅读(43) 评论(0) 推荐(0)
摘要:需求 一个学校院系结构:要在一个页面上展示出学校的院系组成,一个学校可以有多个学院,一个学院有多个系。 组合模式 组合模式(Composite pattern) 又叫做部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体。部分”的层次关系。 组合模式依据树形结构来组合对象,用来表 阅读全文
posted @ 2021-11-06 01:42 King-DA 阅读(99) 评论(0) 推荐(0)
摘要:装饰者设计模式 动态的将新功能附加到对象上,在对象功能拓展方面,它比集成更有弹性,装饰者模式也体现了开闭原则。 1.动态将新功能附加到对象 2.ocp原则 装饰者的图解 抽象类: public abstract class Drink { /** * 描述 */ public String des; 阅读全文
posted @ 2021-11-04 01:32 King-DA 阅读(11) 评论(0) 推荐(0)
摘要:设计模式之适配器(Adapter Pattern) 定义:是两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 在生活中的案例 泰国中的插座是两孔的(欧标),可以使用多功能转接头(适配器),这样就可以使用了 如何使用? 适配器模式通过定义一个新的接口(对要实现 阅读全文
posted @ 2021-07-26 09:28 King-DA 阅读(67) 评论(0) 推荐(0)
摘要:抽象工厂 概念:围绕一个超级工厂来创建其他工厂,该超级工厂又被称为其他工厂的工厂。 优点 具体产品在应用层的代码隔离,无需创建细节 将一系列的产品统一到一起创建 缺点 规定了所有可能被创建的产品集合,产品族中拓展新的产品困难; 增加了系统的抽象性和理解难度 UML类图 首先先看一下这张被使用了无数次 阅读全文
posted @ 2021-07-16 23:04 King-DA 阅读(46) 评论(0) 推荐(0)
摘要:工厂方法 引入的原因: 简单工厂模式违背了开闭原则,而“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。 优点: 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。 灵活性增强,对于新产品的创建,只需多写 阅读全文
posted @ 2021-07-08 01:42 King-DA 阅读(37) 评论(0) 推荐(0)
摘要:工厂设计模式 使用工厂模式,只对外暴露一个接口,可以根据这个接口进行不同的实现创建不同的对象满足业务需要。 解决方式 让其子类实现工厂接口,返回的是一个抽象的产品。 应用实例: 1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。 * 2、Hib 阅读全文
posted @ 2021-07-08 00:55 King-DA 阅读(37) 评论(0) 推荐(0)
摘要:里式替换原则 什么是里式替换原则? 定义一:所有引用基类的地方能透明的使用其子类的对象 定义二:如果对每一个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都代换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。 直白点:可以将一个基类对象 阅读全文
posted @ 2021-07-08 00:31 King-DA 阅读(211) 评论(0) 推荐(0)