Java靜態代理

Oxye發表於2020-10-13

前言

Java中代理有靜態代理、動態代理,動態代理中又分JDK動態代理和CGLib動態代理

本文講一下Java靜態代理

附上其他兩種代理的博文:

JDK動態代理原理 原始碼詳解

CGLib動態代理原理 原始碼詳解

使用

步驟

1.新建介面

2.新建被代理類a

3.新建代理類b,代理類a中實現介面方法,介面方法中呼叫被代理類b的方法

4.使用代理類b呼叫自身方法,實際呼叫了被代理類a的方法

程式碼

為了方便,上述步驟的介面、類都寫到一個類下面

package com.jaylin.jaylin.proxy;

public class StaticProxyTest {
    //介面
    public interface ITestInterface {
        void testMethod();
    }

    //被代理類
    static class TestClass implements ITestInterface {
        @Override
        public void testMethod() {
            System.out.println("TestClass");
        }
    }

    //代理類
    static class ProxyClass implements ITestInterface {
        //目標物件
        private ITestInterface target = new TestClass();

        @Override
        public void testMethod() {
            target.testMethod();
            System.out.println("ProxyClass");
        }
    }

    //使用代理
    public static void main(String[] args) {
        ITestInterface test = new ProxyClass();
        test.testMethod();
    }
}

相關文章