017 靜態代理再理解

狂神說Java:https://space.bilibili.com/95256449


1.接口(抽象角色)

package com.kuang.demo02;

/**
 * @author Administrator
 */
public interface UserService {

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

2.真實角色

package com.kuang.demo02;

/**
 * @author Administrator
 * 真實對象
 */
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("查詢一個用戶!");
    }

    /**
     * 1、改動原有的業務代碼,在公司中是大忌!
     * 2、
     */
}

3.代理角色

package com.kuang.demo02;

/**
 * @author Administrator
 */
public class UserServiceProxy implements UserService {

    private UserServiceImpl userService;

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

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

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

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

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

    /**
     * 日誌方法
     */
    public void log(String msg){
        System.out.println("[debug] 使用了" + msg + "方法!");
    }

}

4.客戶端訪問代理角色

package com.kuang.demo02;

/**
 * @author Administrator
 */
public class Client {
    public static void main(String[] args) {
        UserServiceImpl userService = new UserServiceImpl();
        UserServiceProxy proxy = new UserServiceProxy();
        proxy.setUserService(userService);

        proxy.update();
    }
}

結果

[debug] 使用了update方法!
修改了一個用戶!

聊聊AOP

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章