Spring设计模式(装饰器模式)

模式的定义:

装饰者模式定义:

​ 动态地为一个对象添加一些额外的职责,若要扩展一个对象的功能,装饰者提供了比继承更有弹性的替代方案。

模式的结构图 :

模式包含角色 :

抽象构件类(Component):给出一个抽象的接口,用以规范准备接收附加责任的对象
具体构件类(ConcreteComponent):定义一个具体的准备接受附加责任的类,其必须实现Component接口。
装饰者类(Decorator):持有一个构件(Conponent)对象的实例,并定义一个和抽象构件一致的接口。
具体装饰者类(ConcreteDecoratator):定义给构件对象“贴上”附加责任。

使用场景 :

I/O流,数据源包装 ,Spring 中用到的装饰器模式在类名上有两种表现:一种是类名中含有 Wrapper,另一种是类名中含有Decorator。

模式具体实现 :

一 :基础类

@Data
public class Member {private String username;private String password;private String mid;private String info;
}
@Data
@AllArgsConstructor
public class ResultMsg {private int code;private String msg;private Object data;
}

二:抽象构件类

public interface SiginService {/*** 注册的方法* @param username* @param password* @return*/public ResultMsg regist(String username, String password);
}

三:装饰者类

public class RegistForThirdService implements SiginService {private SiginService siginService;public RegistForThirdService(SiginService siginService){this.siginService = siginService;}public ResultMsg registForQQ(String openId){return siginService.regist(openId,null);}public ResultMsg regist(String username, String password) {return siginService.regist(username,password);}
}

四 具体构件类

public class SiginServiceImpl implements SiginService {public ResultMsg regist(String username, String password) {return new ResultMsg(200,"注册成功",new Member());}
}

五:测试类

@Test
public void test(){RegistForThirdService siginService = new RegistForThirdService(new SiginServiceImpl());siginService.registForQQ("openId");
}

Spring设计模式(装饰器模式)相关推荐

  1. Python设计模式-装饰器模式

    Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...

  2. Go 设计模式 - 装饰器模式

    装饰模式使用对象组合的方式动态改变或增加对象行为.Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式.使用匿名组合,在装饰器中不必显式定义转调原对象方法. 设计模式 装饰器模式 装饰器模式主要 ...

  3. Java设计模式-装饰器模式 理论代码相结合

    继Java设计模式适配器模式后的装饰器模式来啦,让我们一起看看吧. 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一 ...

  4. 设计模式--装饰器模式

    装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装.简单来说,装饰器模式就是 ...

  5. PHP设计模式——装饰器模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 装饰器模式又叫装饰者模式.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装 ...

  6. 设计模式-装饰器模式 C++

    一.简介 1.什么是装饰器模式 装饰器模式是结构型设计模式. 装饰器是现有类的一个包装,可以在不修改现有类且不增加子类的情况下扩展现有类. [注]可以实现向一个现有对象添加新的功能,同时又不改变其结构 ...

  7. 设计模式---装饰器模式(C++实现)

    装饰器模式(Decorator Pattern)允许向一个现有对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原 ...

  8. C++设计模式 装饰器模式

    文章目录 1. 先验知识 2. 装饰器模式相关概念 3. 装饰器模式的应用 3.1 应用1: 给形状添加新的特征 不同形状加红 3.2 应用2: 给一个人穿不同的衣服 a 直接person类, 增加穿 ...

  9. 白话设计模式-装饰器模式的使用和意义

    装饰器模式展示 在学习设计模式的过程中,将自己对于设计模式的理解,以最简单,最白话的方式,分享给大家.个人觉得,对于设计模式的理解,需要将他从最抽象的理论里,真实的代入到实际的业务场景中,将会有最深刻 ...

最新文章

  1. SimpleInjector 简单使用
  2. # 可视化工具资源汇总
  3. Python并发编程:多线程-死锁现象与递归锁
  4. C和指针之Eratosthenes-埃拉托斯特尼筛方法找质数
  5. 【CF113D】Museum【概率期望】【高斯消元】
  6. android monkey压力测试,Android-Monkey 压力测试
  7. C++笔记-lambda表达式需要注意的地方
  8. 数学建模1(历年问题与模型)
  9. linuxShell之一 文件读取 循环与分支
  10. 可以用来做ppt的网页效果
  11. Shell教程----Shell脚本
  12. HTML(三)选择器--复杂选择器
  13. ajax blockUI
  14. 机器学习——概率论基础
  15. Dell重装系统之官方原版系统
  16. twemproxy0.4原理分析-批量操作(mset,hset等)的实现原理
  17. 在Debian中网卡的设置
  18. 【转载】MAC OS X常用快捷键
  19. 利用手机作为渗透工具的一些思路
  20. 鸿蒙落 万物生(上)

热门文章

  1. 世界上的程序语言已经这么多了,为什么还不够?
  2. mysql查询5000到8000_MySQL基础查询
  3. Nginx的重定向规则
  4. Android权限操作之uses-permission详解
  5. 苏州线下python培训班
  6. 达人评测锐龙R5 5600G 和酷睿i5 10400选哪个好
  7. 保姆级JDK1.8安装教程(安装文件下载链接置于文章结尾)
  8. 快速复制oracle数据表
  9. 创新工具|如何构建产品的最小可行架构(MVA)
  10. [数据分析] MATLAB计算列联表的卡方统计量