Spring Study-lesson10-静态代理2-03-18

纵向开发后,如果需要向其中一个层增加内容,比如日志记录,这样就需要使用横向编程的思维:也就是代理机制,代理类有某层的业务方法,同时增加新的业务方法进去。

这样的好处在于不要再去修改之前的各层的代码,直接调用即可。避免了已有程序代码的修改。

第一:接口类

package com.feijian.Service;

public interface UserService {
    public void addUser();
    public void updateUser();
    public void deleteUser();
    public void insertUser();
}

第二:业务实现类:

package com.feijian.Service;

public class UserServiceImpl implements UserService{
    @Override
    public void addUser() {
        System.out.println("增加了一个用户");
    }

    @Override
    public void updateUser() {
        System.out.println("更新了一个用户");
    }

    @Override
    public void deleteUser() {
        System.out.println("删除了一个用户");
    }

    @Override
    public void insertUser() {
        System.out.println("插入了一个用户");
    }
}

第三:代理类

package com.feijian.Service;

public class UserServiceProxy implements UserService{

    private UserServiceImpl userService;

    public void setUserService(UserServiceImpl userService) {
        this.userService = userService;
    }

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

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

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

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

    public void log(String msg){
        System.out.println("【Debug】调用了"+msg+"方法");
    }
}

第四:测试

package com.feijian.Service;

public class Client {
    public static void main(String[] args) {
        //生成业务对象
        UserServiceImpl userService = new UserServiceImpl();
       //生成代理对象
        UserServiceProxy serviceProxy = new UserServiceProxy();
       //代理开始处理业务对象的内容
        serviceProxy.setUserService(userService);
        
        serviceProxy.addUser();

    }
}
posted @ 2023-03-18 10:37  Rui2022  阅读(11)  评论(0编辑  收藏  举报