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();
}
}