装饰模式

设计模式——装饰模式 装饰模式是一种用来替代继承的思想,它使用对象之间的关联关系来取代类之间的继承关系。继承是一种常用的一种拓展原有类的功能的方法,通过创建一个继承父类的子类来拓展原有的功能,在“合成复用原则”中曾提到,在处理类的功能拓展这个问题上应尽量使用类之间的关联关系而少使用继承关系。为什么要用这个模式:以对客户透明的方式动态地给一个对象附加上更多的责任,装饰模式可以在不需要创造更多的子类的情况下,将对象的功能加... 阅读详情

装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。

java的IO模块,就大量的使用到了装饰模式。

1.组件接口和组件的实现

[java] view plain copy
print?

/** 
 * @Desc:支付组件的接口 
 * @author zy 
 * @date 2016年8月12日下午2:39:33 
 */  
public interface Component {  

    /** 
     * @Desc:支付成功 
     * @author:zy 
     * @version: 2016年8月12日 下午2:55:44 
     */  
    public void paySuccess();  

    /** 
     * @Desc:修改订单状态 
     * @author:zy 
     * @version: 2016年8月12日 下午2:40:42 
     */  
    public void updateOrderStatus();  

    /** 
     * @Desc:插入订单的log 
     * @author:zy 
     * @version: 2016年8月12日 下午2:46:11 
     */  
    public void addOrderLog();  
}  

[java] view plain copy
print?

/** 
 * @Desc:订单类的具体实现 
 * @author zy 
 * @date 2016年8月12日下午2:46:58 
 */  
public class OrderOperation implements Component{  

    @Override  
    public void paySuccess() {  
        updateOrderStatus();  
        addOrderLog();  
    }  

    @Override  
    public void updateOrderStatus() {  
        System.out.println("修改订单状态为已支付");  
    }  

    @Override  
    public void addOrderLog() {  
        System.out.println("插入订单日志表");  
    }  

}  

2.支付组件的增强

[java] view plain copy
print?

public class OrderOperationPlus extends OrderOperation{  

    @Override  
    public void paySuccess() {  
        super.paySuccess();  
        pushOrder();  
    }  

    /** 
     * @Desc:推送支付的流水 
     * @author:zy 
     * @version: 2016年8月12日 下午3:07:06 
     */  
    public void pushOrder(){  
        System.out.println("**推送支付的流水信息**");  
    }  
}  

3.测试

[java] view plain copy
print?

public class M {  
    public static void main(String[] args) {  
        Component orderOperation = new OrderOperationPlus();  

        orderOperation.paySuccess();  
    }  
}  

装饰模式,在原有的逻辑基础上,动态的新增逻辑
记得之前,公司里做支付,支付成功了要做两件事
1.更改订单表的订单状态
2.插入订单的log
但是,之后政府出台了新政策-支付宝支付订单要去海关备案。又要添加新的逻辑又不能改变之前的代码,这里,装饰模式很自然的使用起来了

【FLINK+Kerberos+kafka】在华为云上 bootstrap.server使用IP的GSS initiate failed 问题处理 目前互联网上所有的资料显示都是说没有正确设置KDC之类的,但本博主实际通过java代码低版本 如使用kafka-client 0.11.0 ,2.4.0等版本手动创建kafkaconfig 或者使用华为云的LoginUtils类 都能够正常链接,所以应该是高版本添加了相关配置,或者flink在subtask 创建kafkaAdminClient时 丢弃或使用了默认的一些配置行为,导致了客户端和kdc验证之间出现了principal 不一致导致验证失败。client.dns.lookup配置项作用。 阅读详情

相关推荐

Win11安装Office2021

windows11安装office2021。

1万+

Java系列之装饰模式

一,写在前面     在学习装饰模式之前,建议先了解代理模式。装饰模式和代理模式的类图结构几乎一样,仅仅是使用的目的有所差异,对比学习有助于理解装饰模式的使用。     假设有一个接口Human,一个接口的实现类Man。人类Human是可以跑步的,但是不能飞。     如果想给人类加上飞翔的翅膀,可以有三种解决方案: 修改实现类Man的方法,但不符合开闭原则 给实现类Man添加一个子类,...

小王君的专栏 1万+

Docker一键部署Synopsys EDA全家桶(VCS/Verdi 2018版)保姆级教程

本文提供了一份详尽的Docker容器化部署Synopsys EDA工具链(VCS/Verdi 2018版)的保姆级教程。通过环境隔离与标准化,解决传统安装的依赖冲突问题,并重点攻克了容器内GUI图形界面显示的核心难题。教程涵盖从Docker基础安装、镜像获取、容器启动配置,到使用X11转发或VNC实现Verdi完美显示的完整实践,旨在帮助芯片设计工程师快速构建稳定、可移植的一键化EDA工作环境。

weixin_29281941的博客 198

java装饰模式实例解析

1、装饰模式概述: 装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类更为灵活。《设计模式的艺术》 使用场景: 现实生活中大家都会遇到的一种场景,当买了房子之后,可能都需要对房子进行装修,或是根据自己的一些喜好对房间进行二次的装饰来满足自己的需求。软件系统开发也如此,一个系统设计好之后,常常需要对系统进行扩展...

hb_csu的博客 5492

STM32与HT7038的高精度电能计量系统设计与实现

本文详细介绍了基于STM32微控制器与HT7038三相电能计量芯片的高精度电能计量系统设计与实现。文章从项目选型出发,深入剖析了硬件电路设计、SPI驱动开发、芯片校准及系统集成等关键环节,为智能电表、能源监控等应用提供了高性价比且稳定的国产化解决方案。

pytorch8learner的博客 389

Unity游戏开发客户端Lua基础

Unity游戏开发客户端面经之 lua 篇

Sea3752的博客 1万+

【深入设计模式】装饰模式—什么是装饰模式?装饰模式在源码中的应用

装饰模式——让你的代码锦上添花。装饰模式详解及装饰模式在源码中的应用

SK_Jaco的博客 1279

高通平台camera构架sensor驱动详解

优先阅读。

a5566255的专栏 3251

设计模式之装饰模式

 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构   装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。   装饰模式的类图如下:      在装饰模式中的角色有:   ●  抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。   ●  具体构件(Con

用键盘与世界交流 1123

OpenStack [ compute_id ] 设计上的小缺陷

而 nova 代码中硬编码(或默认配置)将 compute_id 放在 site-packages 目录,属于 设计上的小缺陷—— 把 “库安装目录” 和 “运行时数据目录” 混在一起了,才导致需要临时调整这个目录的权限。# 配置项说明:node_identity_file 是 nova 用于指定节点标识文件路径的官方配置项,优先级高于代码中的默认路径。自定义 compute_id 路径,指向 /var/lib/nova/ 目录下的 compute_id 文件;

求知若渴,虚心若愚。 491

什么是 SAPGUI 里的 Logon Group/Server

这意味着,不同的用户连接可以被分配到不同的应用服务器,以实现均衡的资源利用和降低某一服务器的负载压力。在这种配置下,欧洲的用户登录时选择“EUROPE_GROUP”,系统将自动选择一个位于欧洲的数据中心的服务器进行连接,这样不仅减少了网络延迟,还实现了服务器间的负载均衡。用户在 SAPGUI 中登录时,只需选择相应的 Logon Group(例如“FIN_GROUP”),系统就会自动将他们的连接请求分配到当前负载最小的应用服务器上,这种动态分配大大提升了系统的响应速度和稳定性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1069

重新认识装饰模式--装饰模式实现AOP

一、AOP是什么 AOP:面向方面编程,他是一种编程范式,提供从另外一个角度来考虑程序结构以完善面向对象编程。 二、AOP的功能       在系统开发过程中会有一些共性的功能,这是面向对象的纵向思考方式就能解决问题了,这时候AOP横向延伸就可以解决这些公共服务织入系统中。AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,比如事务处理、日志处理、权限控制封装起来,便于减少系

wangdan1030的博客 8149

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java中的装饰模式

装饰模式 特征:为接口增强性能 必须有一个装饰的对象 必须拥有与被装饰对象相同的接口 可以给被装饰对象添加额外的功能。 装饰器通过包装一个装饰对象来扩展其功能,而又不改变其接口,这实际上是基于对象的适配器模式的一种变种。他与对象的适配器模式有异同点。 相同点:都拥有一个目标对象 不同点:适配器模式需要实现另外一个接口,而装饰器模式必须实现该对象的接口。 典型的装饰器模式图: 简单...

兰枫 2390

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

装饰模式 – 半透明装饰模式

装饰模式 – 半透明装饰模式: 目录 I/O 应用 源码: 输入流 InputStream 应用: 读取txt文件: 结果: Poi读取excel文件: 读取excel代码: 测试: 结果: 总结: 在装饰模式的学习中,会出现一个透明装饰模式和半透明的装饰,是什么意思呢? 透明装饰模式 在透明装饰模式中要求客户端完全针对抽象编程,装饰模式的透明性要求客户端程序不应该将对象声明为具体构件类型或具体装饰类型,而应该全部声明为抽象构件类型。对客户端而言,具体构件类和具体装...

一路向前 664

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

代理模式和装饰模式的区别_装饰模式和代理模式

之前接触过装饰模式和代理模式,一直都分不清楚两者的区别。今天看书以及查阅了一些资料终于有了个清晰的认识,所以记录一下。装饰模式装饰模式就是动态地给一个对象添加一些额外地职责,可以达到增强一个对象功能的作用。也就是装饰来包裹一个真实的对象。看定义可能有点难理解,直接上代码。首先定义一个程序员接口/** * @author fanshanchao * @date 2019/4/17 21:45 ...

weixin_29001423的博客 1758
上一篇: JavaWeb 项目安全问题及其解决方案
下一篇: Java web过滤器验证登录防止未登录进入界面
springlovejava
博客等级 码龄9年 26粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值