设计模式: 代理模式--静态代理

代理模式属于结构形设计模式

为什么会用到代理模式:
例如,单身的码农找对象时会请媒婆来帮助自己,这时候就使用到了代理模式,码农就是一个被代理类,而媒婆就是一个代理类,客户端只需要调用代理类(媒婆)的方法就可以实现被代理类(码农)的需求。

静态代理: 先上代码

// 首先创建一个接口(人类)
public interface StaticProxyPerson {
    //  定义接口‘找对象’
    void findLove();
}
/**
 * 定义程序员类 实现StaticProxyPerson接口
 */
public class ChengXuYan implements StaticProxyPerson {

    /**
     * 实现'找对象'接口
     */
    public void findLove() {
        System.out.println("被代理类: 漂亮");
    }
}
/**
 * 代理类 '媒婆'
 */
public class MeiPo implements StaticProxyPerson {

    private StaticProxyPerson target;

    public MeiPo(StaticProxyPerson target) {
        this.target = target;
    }


    public void findLove() {
        System.out.println("代理类: 开始给被代理类找对象");
        System.out.println("代理类: 找到了,名字叫翠花,你看看怎么样? @被代理类");
        target.findLove();
        System.out.println("代理类: 那好,我再去找翠花聊聊");
    }
}
public static void main(String[] args) {
        // 被代理类
        ChengXuYan chengXuYan = new ChengXuYan();
        // 代理类
        MeiPo meiPo = new MeiPo(chengXuYan);
        meiPo.findLove();
    }

最后运行结果: 
           代理类: 开始给被代理类找对象
           代理类: 找到了,名字叫翠花,你看看怎么样? @被代理类
           被代理类: 漂亮
           代理类: 那好,我再去找翠花聊聊

以上就是java静态代理的实现, 但是在实现了业务的同时也有很多缺点:

  • 当被代理类增加新的方法时 代理类也要同时增加 违背了开闭原则

你可能感兴趣的:(设计模式: 代理模式--静态代理)