设计模式-结构篇(代理模式)

代理模式:

一个类代表另一个类的功能

有些事情本应该是你做的,但是你不想做或者不方便做的时候,叫别人替你完成.

静态代理
动态代理

/**
 * Created by malei on 2016/12/6.
 * 代理人, 由于需要帮委托人带饭, 也必须实现午饭接口
 */
public class ProxyMan implements Lunch {

    private final You mYou;

    public ProxyMan(You you) {
        mYou = you;
    }
    @Override
    public void eat() {
        mYou.eat();
    }

    //静态代理
    public static void main(String[] ages){
        You you = new You();
        ProxyMan man = new ProxyMan(you);
        man.eat();
    }

    //动态代理
    public static void main2(String[] ages){
        You you = new You();
        Lunch people = (Lunch) Proxy.newProxyInstance(
                                          you.getClass().getClassLoader(),
                                          new Class[]{Lunch.class},
                                          new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, 
                                  Object[] args) throws Throwable {
                        return method.invoke(you,args);
                    }
                });
        people.eat();
    }
}

/**
 * Created by malei on 2016/12/6.
 */
public class You implements Lunch {

    @Override
    public void eat() {
        Log.show("我要吃小炒肝尖!");
    }
}

/**
 * Created by malei on 2016/12/6.
 * 午饭的规范
 */
public interface Lunch {
    void eat();
}

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,523评论 25赞 708
  • 如果要说设计模式中哪种模式在生活中最常见,那么代理模式是当仁不让的。比如,你一觉睡到中午不想去食堂打饭,于是你委托...
    湫水长天阅读 995评论 1赞 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,197评论 19赞 139
  • 本文首发于个人博客:Lam's Blog - 谈谈23种设计模式在Android源码及项目中的应用,文章由Mark...
    格子林ll阅读 4,798评论 1赞 105
  • 1 二十出头野心太大付出太少。我是无意中看到这句话的,也无意中记了下来,直到这...
    北往北阅读 398评论 0赞 2

友情链接更多精彩内容