零基础学习设计模式之装饰器模式(文档)
2023-06-13 09:12:49 时间
定义
在不改变目标结构的情况下,动态的给对象增加功能
举例
如房子装修、相片加相框等,都是装饰器模式。
基本组件
- 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。
- 具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。
- 抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
- 具体装饰(ConcreteDecorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。
类图
代码
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public interface Component {
public void execute();
}
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public class ConcreteComponent implements Component{
@Override
public void execute() {
System.out.println("开始执行原始操作...");
}
}
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public abstract class Decorator implements Component{
private Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void execute() {
component.execute();
}
}
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public class DecoratorA extends Decorator{
public DecoratorA(Component component) {
super(component);
}
@Override
public void execute() {
addExcExecute();
super.execute();
}
public void addExcExecute(){
System.out.println("对方法进行装饰处理");
}
}
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public class Main {
public static void main(String[] args) {
Component component = new DecoratorA(new ConcreteComponent());
component.execute();
}
}
成长心路 | 优质书单 | 面试资料
牛人故事 | 前沿技术 | 视频教程
相关文章
- Java基础入门笔记02——文档注释,JavaDos文件,数据类型,类型转换,变量默认值问题
- JAVA 正则表达式_正则表达式文档
- mongoose官方文档总结
- 网络工程项目相关的23个文档,必要时刻很关键!
- 如何进行地图SDK开发(二)——示例文档
- 基于Vision Transformers的文档理解简介
- 网络产品文档定向捉虫活动
- 微软亚研院:文档基础模型引领文档智能走向多模态大一统
- OCR技术大揭秘:纸质文档数字化的新选择
- Master PDF Editor是一款功能强大的PDF和XPS文档编辑工具,它可以帮助您查看和编辑PDF和XPS文档。
- 文档SQL Server官方文档:超越基础,走向专家(sqlserver官方)
- 文档Linux系统下获取帮助文档(linux中帮助)
- 联调Redis文档实现极致效能(联调redis文档)
- Jquery基础学习笔记之文档处理
- php将数据库中所有内容生成静态html文档的代码