代理模式 —— 静态代理模式

      1. 负责声明新增功能
      2. 代替开发人员完成目标方法与新增功能的调用

目标方法调用

开发人员==>切面类对象==》

新增功能调用

  1. 口号
    1. 一个切面类为一个接口服务
优缺点
  1. 优点
    1. 在不违反开闭原则,不产生重复性编码的情况下,将新增功能与目标方法进行关联
    2. 第一次将代理模式角色进行了清晰划分
    3. 明确一个切面类为一个接口服务的------------面向接口编程
  1. 缺点
    1. 后期目标类个数发生变化时,要帮助的目标方法发生变化时,都会导致提供帮助的切面类进行二次维护------------------切面类后期维护会过于频繁
演示
接口
复制代码
public interface BaseService {
    void run();
}
目标类
复制代码
public class Service1 implements BaseService {
    @Override
    public void run() {
        System.out.println("Service1运行");
    }
}

public class Service2 implements BaseService {
    @Override
    public void run() {
        System.out.println("Service2运行");
    }
}
切面类
复制代码
public class ServiceAspect {
    private BaseService target;

    /**
     * 输出当前时间
     */
    public void getTime(){
        DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = sdf.format(new Date());
        System.out.println("运行结束的时间:" + date);
    }

    /**
     *
     * @param i 区分类的id
     */
    public void invoke(int i){
        if (i == 1) {
            target = new Service1();
        }
        if (i == 2) {
            target = new Service2();
        }
        target.run();
        getTime();
    }
}
测试类
复制代码
public class ServiceAspectTest {
    @Test
    public void getTimeTest(){
        ServiceAspect serviceAspect = new ServiceAspect();
        serviceAspect.invoke(1);
        /*
        Service1运行
        运行结束的时间:2024-03-27 20:30:20
        * */
        serviceAspect.invoke(2);
        /*
        Service2运行
        运行结束的时间:2024-03-27 20:30:20
        * */
    }
}
相关推荐
Wnq100722 天前
鸿蒙 OS 与 CORBA+DDS+QOS+SOA 在工业控制领域的核心技术对比研究
物联网·性能优化·wpf·代理模式·信号处理·harmonyos·嵌入式实时数据库
ZouZou老师3 天前
C++设计模式之代理模式:以家具生产示例
c++·设计模式·代理模式
菜鸡的升级之路3 天前
ngrok
前端·代理模式
roman_日积跬步-终至千里3 天前
【计算机算法与设计(5)】贪心法、分治法、动态规划的原理和问题求解
算法·动态规划·代理模式
阿波罗尼亚5 天前
Head First设计模式(十一) 设计原则 代理模式
设计模式·代理模式
繁华似锦respect6 天前
C++ 智能指针底层实现深度解析
linux·开发语言·c++·设计模式·代理模式
开心香辣派小星9 天前
23种设计模式-11代理模式
设计模式·代理模式
babywew110 天前
[2021一区Top刊复现+改进] Highlights:能源枢纽;多目标优化;碳排放管理;折中规划
代理模式
李子琪。10 天前
Metasploit渗透测试实战深度解析:从操作系统到应用服务的漏洞利用
经验分享·代理模式·课程设计
雨中飘荡的记忆10 天前
设计模式之代理模式详解
设计模式·代理模式