代理模式的好处

image

接口:

package com.shao.demo02;

public interface UserService {
    public void add();
    public void delete();
    public void update();
    public void query();
}

真实对象:

package com.shao.demo02;

public class UserServiceImpl implements UserService {
    public void add(){
        System.out.println("增加了一个用户");
    };
    public void delete(){
        System.out.println("删除了一个用户");
    };
    public void update(){
        System.out.println("改变了一个用户");
    };
    public void query(){
        System.out.println("查询了一个用户");
    };
}

假设我们在中间要加一个打印日志的方法,一般开发中是不能改变原有代码的,所以采用代理模式

package com.shao.demo02;

public class UserServiceProxy implements UserService{
    private UserServiceImpl userService;

    public UserServiceProxy() {
    }

    public UserServiceProxy(UserServiceImpl userService) {
        this.userService = userService;
    }

    @Override
    public void add() {
        log("add()");
        userService.add();
    }

    @Override
    public void delete() {
        log("delete()");
        userService.delete();
    }

    @Override
    public void update() {
        log("update()");
        userService.update();
    }

    @Override
    public void query() {
        log("query()");
        userService.query();
    }
    public void log(String msg){
        System.out.println("使用了"+msg+"方法");
    }
}

posted @   蘑菇王国大聪明  阅读(71)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示