大话设计模式读后感之代理模式(JAVA)

如果你交给某人一个程序,你将折磨他一整天,如果你教某人如何编写程序,你将折磨他一辈子。

最近学习了设计模式后,发现自己JAVA基础不够扎实,回头开始看《Thinking in java》,吐槽一下。。。文章的翻译好僵硬。。这书真的是推荐给初学者的么。

一、依据故事我所设计的代理模式。

故事:李四请张三帮忙以他的名义把东西送给娇娇。

代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。

利用接口实现。。

追求者代理

/**
 * Created with Intellij IDEA.
 * User : Yebinghuan
 * Created on 2017/8/5.
 * Description :
 *   假设这个是送礼的人 张三
 *      他有这些行为但是没有真正的实体东西
 */
public interface Suitors {

    /**
     * 送花
     */
    public void sendFlower();


    /**
     * 送人头
     */
    public void sendHead();
}

真正的追求者

/**
 * Created with Intellij IDEA.
 * User : Yebinghuan
 * Created on 2017/8/5.
 * Description :
 *  这个是真正的追求者 李四
 *      他有具体的东西但是他没有去送
 */
public class SuitorsImpl implements  Suitors {
    String name;

    public SuitorsImpl(String name){
       this.name=name;
    }
    @Override
    public void sendFlower() {
        System.err.println("送花给"+name);
    }

    @Override
    public void sendHead() {

        System.err.println("送人头给"+name);

    }
}


行动Main

 Suitors suitors=new SuitorsImpl("娇娇");
	//追求者张三
        suitors.sendFlower();
        suitors.sendHead();

=。=感觉代理是达到了,但是感觉有点不像面向对象, 接口不能作为一个具体对象来看待,应该另外创建一个对象张三来替李四送东西。

那么我们需要新增加一个对象为张三

张三具体类

/**
 * Created with Intellij IDEA.
 * User : Yebinghuan
 * Created on 2017/8/5.
 * Description :
 *  该对象为张三 他要替李四送礼
 */
public class ZhangsanImpl implements  Suitors{

    LisiImpl suitors;
    public ZhangsanImpl(String name) {
        //我们要拿到李四的请求
        suitors= new LisiImpl(name);
    }


    @Override
    public void sendFlower() {
        //李四想把花送给娇娇,通过张三的手
        System.err.println("张三");
        suitors.sendFlower();
    }

    @Override
    public void sendHead() {
        System.err.println("张三");
        suitors.sendHead();
    }
}
张三
送花给娇娇
张三
送人头给娇娇


该模式定义:李四给了张三xx东西,并要求由 张三去送给娇娇

JDK中用到代理模式的有

 java.lang.reflect.Proxy

java.rmi.*


=。=木有用过啊。

二、代理模式和运用场景分析

  1、任务清晰,张三只需要知道他要把东西送给娇娇,压根不用管花去哪买的。

  2、扩展性高,张三能帮忙,那么只要条件符合换个王五也一样能做。

  3、 私密性质(个人感觉是设计核心理念),除了娇娇,张三,李四,知道这花是李四送给娇娇的。在其他人眼里 是张三送花给娇娇


根据这3个特性,我最先想到的应用场景

权限控制 的设计方案可以这样玩

全部的权限----李四类

根据调用者权限请多个代理----张三类

加上策略模式,根据不同的调用对象的权限反馈不同的代理。

偷笑大致是这种感觉,以上是我读完《大话设计模式之代理模式的读后感》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值