一个小demo带你了解静态代理

2019-05-23  本文已影响0人  majorty
package com.majorty;

/**
 * 静态代理举例
 * 特点:代理类和被代理类在编译期间,就确定下来了
 *
 * @author zhangshuai
 * @date 2019-05-23 14:50
 */
interface ClothFactory {

    void produceCloth();
}

/**
 * 代理类
 */
class ProxyClothFactory implements ClothFactory {

    private ClothFactory factory;//用被代理类对象进行初始化

    public ProxyClothFactory(ClothFactory factory) {
        this.factory = factory;
    }

    @Override
    public void produceCloth() {
        System.out.println("代理工厂做一些准备工作");
        factory.produceCloth();
        System.out.println("代理工厂做一些后续收尾工作");
    }
}

/**
 * 被代理类
 */
class NikeClothFactory implements ClothFactory {

    @Override
    public void produceCloth() {
        System.out.println("Nike工厂生产一批运动鞋");
    }
}

/**
 * 测试类
 */
public class StaticProxyTest {

    public static void main(String args[]) {
        //创建被代理类的对象
        NikeClothFactory nike = new NikeClothFactory();
        //创建代理类的对象
        ProxyClothFactory proxyClothFactory = new ProxyClothFactory(nike);
        proxyClothFactory.produceCloth();
    }
}

控制台输出:


图片.png
上一篇下一篇

猜你喜欢

热点阅读