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

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

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

静态代理: 先上代码

// 首先创建一个接口(人类)
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静态代理的实现, 但是在实现了业务的同时也有很多缺点:

  • 当被代理类增加新的方法时 代理类也要同时增加 违背了开闭原则
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容