您的位置:首页 > 财经 > 产业 > 新媒体营销中常见的知识问答平台有_程序员培训班_seo推广服务_产品推广活动策划方案

新媒体营销中常见的知识问答平台有_程序员培训班_seo推广服务_产品推广活动策划方案

2025/4/16 10:39:50 来源:https://blog.csdn.net/tergou/article/details/147031191  浏览:    关键词:新媒体营销中常见的知识问答平台有_程序员培训班_seo推广服务_产品推广活动策划方案
新媒体营销中常见的知识问答平台有_程序员培训班_seo推广服务_产品推广活动策划方案

装饰器模式

  • 描述
  • 基本使用
  • 使用

描述

装饰器模式是一种功能型模式
用于动态增强对象的功能
这么一说感觉上和代理模式有些类似

抽象装饰器 要实现原有业务接口,并注入原有业务对象
至于对原有业务对象的调用,可以采用private业务对象 + 实现业务接口方法的形式 或者 protected + 具体装饰类调用原有对象方法

但是装饰器在有些点上可能违反里氏替换原则,特别是装饰器存在重载的时候要注意

基本使用

  • 定义一个抽象业务接口(这是实现装饰器模式的基础)
public interface IService {void biz();
}
  • 原有业务实现类
public class DefaultService implements IService {@Overridepublic void biz() {System.out.println("DefaultService....");}
}
  • 装饰器抽象(通常是抽象类,持有原有对象的引用
public abstract class AbstractWrapper implements IService {private IService service;public AbstractWrapper(IService service) {this.service = service;}@Overridepublic void biz() {service.biz();}
}
  • 具体装饰器
public class WrapperA extends AbstractWrapper {public WrapperA(IService service) {super(service);}@Overridepublic void biz() {super.biz();this.wrapperA();}private void wrapperA() {System.out.println("WrapperA 增强方法");}
}public class WrapperB extends AbstractWrapper {public WrapperB(IService service) {super(service);}@Overridepublic void biz() {super.biz();this.wrapperA();}private void wrapperA() {System.out.println("WrapperB 增强方法");}
}

使用

public class Sample {public static void main(String[] args) {IService service = new DefaultService();service.biz();System.out.println("===== 使用装饰器 ===");IService wrapper = new WrapperA(new WrapperB(service));wrapper.biz();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com