设计模式

Java静态代理

2018-09-26  本文已影响9人  韭菜待收割

1、静态代理含义(或者核心思想)

代理对象通过持有需要被代理类的实例(中介),来实现代理方式。

2、代码示例

//懒,就写一起了
public class MainTest {
    //测试方法
    public static void main(String[] args) throws Exception {
        MainTest mainTest = new MainTest();
        mainTest.test();
    }

    public void test() {
        ProxyRole proxyRole = new ProxyRole();
        proxyRole.myMethod();
    }

    //代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,
    //同时代理对象提供与真实对象相同的接口以便在任何时刻都能够代替真实对象。
    //同时,代理对象可以在执行真实对象前后,附加其他的操作,相当于对真实对象进行封装。
    public class ProxyRole extends AbstractRole {
        //代理角色对象内部含有对真实对象的引用
        private RealRole realRole;

        @Override
        public void myMethod() {
            //执行部分代码
            if (null == realRole) {
                realRole = new RealRole();
            }
            //真实角色所完成的事情
            realRole.myMethod();
            //执行部分代码
        }

    }

    //真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
    public class RealRole extends AbstractRole {
        @Override
        public void myMethod() {
            System.out.println("我是RealRole类中的myMethod方法");
        }
    }

    //抽象角色:真实对象和代理对象的共同接口或基类
    public abstract class AbstractRole {
        public abstract void myMethod();
    }

}

静态代理模式涉及到的角色:抽象角色、真实角色、代理角色

上一篇 下一篇

猜你喜欢

热点阅读