静态代理

静态代理就是对象通过代理对象去调用方法,实现不改变原有代码的情况下,增强原方法的功能,比如给原方法加日志,加事务等功能

第一步:新建一个service 接口

package service;

public interface UserService {

    public void add();
    public void del();
    public void query();
    public void update();
}

 

第二步:新建service 的实现类

package service.impl;
import service.UserService;
public class UserServiceImp implements UserService {
    public void add() {
        System.out.println("add");
    }

    public void del() {
        System.out.println("del");
    }

    public void query() {
        System.out.println("query");
    }

    public void update() {
        System.out.println("update");
    }
}

 

第三步:新建静态代理类

package service.impl;
import service.UserService;
public class UserServiceProxy implements UserService {
    
    private UserService userServiceImp;
    //让这个静态类拥有UserService这个属性,并且有set方法
    public void setUserServiceImp(UserService userServiceImp) {
        this.userServiceImp = userServiceImp;
    }
    //进行静态加强
    public void add() {
        log("add");
        userServiceImp.add();
    }

    public void del() {
        log("del");
        userServiceImp.del();
    }

    public void query() {
        log("query");
        userServiceImp.query();
    }

    public void update() {
        log("update");
        userServiceImp.update();
    }

    //进行静态加强
    public void log(String message){
        System.out.println("这是:"+message+"方法");
    }

}

 

第四步:测试

package test;

import service.UserService;
import service.impl.UserServiceImp;
import service.impl.UserServiceProxy;

public class Mytest {
    public static void main(String[] args) {
        //新建被代理类
        UserService userService=new UserServiceImp();
        //新建代理类
        UserServiceProxy userServiceProxy= new UserServiceProxy();
        //让代理类去代理被代理类
        userServiceProxy.setUserServiceImp( userService);
        //直接用代理类来调用方法
        userServiceProxy.add();
    }
}

 

posted @ 2020-09-02 00:50  呆马and鸽子  阅读(189)  评论(0)    收藏  举报