![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 66
MrDJun
热爱学习,传递知识。
展开
-
Spring5设计模式 - 装饰者模式
设计模式 - 装饰者模式指在不改变原有对象的基础上,将功能附加到对象上,比继承更加灵活。适用场景:(1)扩展一个类的功能或给一个类添加附加职责;(2)动态给一个对象添加功能,这些功能可以再动态的撤销;在生活中,给煎饼加鸡蛋、蛋糕加水果、房子装修等都是在为对象扩展一些额外的职责。煎饼加蛋加肠计算最终金额的案例分析:BatterCake: 普通煎饼public class BatterCake { protected String getMsg() { return "煎原创 2021-02-06 23:55:17 · 443 阅读 · 0 评论 -
Spring5设计模式 - 观察者模式
设计模式 - 观察者模式 观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者是又称为发布订阅模式。观察者一般是指第三方,负责通知订阅者消息。一、案例Observer 观察者一般是一个接口,每一个实现该接口的实现类都是具体观察者public interface Observer { // 接收订阅号的通知,所以每个观察者都需要实现这个方法 void update(Stri原创 2021-02-06 23:48:20 · 205 阅读 · 0 评论 -
Spring5设计模式 - 模板方法模式
设计模式 - 模板方法模式------------ 目录直通车 --------------设计模式 - 模板方法模式一、定义二、适用场景三、案例四、优缺点一、定义定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。二、适用场景一次性实现一个算法不变的部分,并将可原创 2021-02-05 12:00:54 · 202 阅读 · 1 评论 -
Spring5设计模式 - 代理模式
设计模式 - 代理模式-------目录直通车-------设计模式 - 代理模式一、静态代理二、动态代理模式三、静态代理和动态代理的区别四、代理模式在Spring中的应用五、代理模式的优缺点附:六、手写实现JDK的动态代理一、JDK实现方式二、手写实现JDK动态代理两种模式:静态代理、动态代理。两个目的:保护目标对象、增强目标对象。定义:代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制对这个对象的访问,属于结构型模式。在某些情况下,一个对象不适合或者不能直接引用另一个对象,原创 2021-02-04 23:30:18 · 239 阅读 · 0 评论 -
Spring5设计模式 - 适配器模式
设计模式 - 适配者模式-------------- 目录直通车 --------------------设计模式 - 适配者模式一、案例一二、案例二三、优缺点适配者模式是指将一个类的接口转换成用户期望的另一个接口,是原本不兼容的类可以一起工作。一、案例一插座的电压是 220V,手机充电器会把 220V 转换成 5V电压给手机充电,此时这个充电器就是一个适配器。AC220:插座输出 220V 电压public class AC220 { public int outputAC220V()原创 2021-02-04 23:27:57 · 325 阅读 · 0 评论 -
Spring5设计模式 - 委派模式
设计模式 - 委派模式定义:是一种面向对象的设计模式,允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用和分配任务,是一种特殊的静态代理,可以理解为全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式属于行为型模式,不属于GOF23种设计模式中。应用场景:1、委派对象本身不知道如何处理一个任务或请求,而交给其他对象来处理;2、实现程序的解耦经典案例:老板想要做一个XX项目,安排给项目经理,项目经理事先是了解整个项目组的每个人的职责的,于是项目经理拿到项目之后,分模块分配给原创 2021-01-31 16:46:04 · 246 阅读 · 0 评论 -
Spring5设计模式 - 策略模式
设计模式 - 策略模式策略模式:它定义了算法的家族,分别封装起来,让他们之前可以相互替换,此模式让算法的改变,不会影响到算法的客户。适用场景:假如系统中有很多类,而他们的区别仅仅在于他们的行为不同.一个系统需要动态地在几种算法中选择一种.一、用策略模式实现选择支付方式的业务场景在商城系统中,常常存在多种策略的优惠活动,比如拼团、返现促销、优惠券抵扣。下面是一个模拟这个场景的demo:促销策略的接口 PromotionStrategy:public interface Promot原创 2021-01-31 16:41:06 · 435 阅读 · 2 评论 -
Spring5设计模式 - 原型模式
设计模式 - 原型模式--------目录直通车-------设计模式 - 原型模式一、浅克隆二、深克隆三、克隆破坏单例模式原型模式是指原型实例指定创建对象的种类,并复制这些原型这些原型创建新的对象。主要适用于:(1)大量的Getter和Setter 赋值的场景(2)类初始化消耗资源较多。(3)使用 new 生成一个对象需要非常繁琐的过程(数据准备、访问权限)。(4)构造函数比较复杂。(5)在循环体中产生大量对象。 在 Spring 中,原型模式应用得非常广泛,例如 scope=“pr原创 2021-01-30 21:13:20 · 978 阅读 · 0 评论 -
Spring5设计模式- 工厂模式
设计模式 - 工厂模式分为简单工厂模式、工厂方法模式、抽象工厂。只关心结果,不关心过程;定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行;以生产手机为例,制造手机有一套标准,现在市面的手机品牌会找代工厂按照这个标准生产手机。一、简单工厂模式Phone类:手机标准规范类(AbstractProduct)public interface Phone { void make();}MiPhone类:制造小米手机public clas原创 2021-01-30 17:38:22 · 178 阅读 · 0 评论 -
Spring5设计模式 - 单例模式
设计模式 - 单例模式----------------目录直通车---------------设计模式 - 单例模式一、饿汉单例模式二、懒汉单例模式三、注册式单例模式1、枚举式单例模式2、容器缓存单例模式确保一个类在任何时候都绝对只有一个实例,并提供一个全局访问点。一、饿汉单例模式饿汉模式适用于单例对象较少的情况。写法一:直接在使用 static 关键字创建对象public class HungrySingleton { private static final HungrySingl原创 2021-01-30 17:31:42 · 183 阅读 · 0 评论