码迷,mamicode.com
首页 > 编程语言 > 详细

java 之 代理模式(大话设计模式)

时间:2017-11-24 19:07:05      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:log   oom   分享图片   权限   str   帮助   设计   ring   style   

java代理模式顾名思义,就类似于大学,我想和冰可乐,可是我又在玩游戏,于是我让我的室友帮我把可乐带回来,简单的来说我的室友就是代理,而买可乐就是需要做的行为。这是笔者理解的代理模式

大话设计模式-类图

技术分享图片

要想实现代理,那么代理类和被代理的类就都要实现一个共同的接口,就刚刚买可乐的例子,我和我的室友都可以买可乐。

代理类可以动态的去做一些事情,例如室友心情不好不帮你买可乐了,或者心情好,在买可乐的同时还赠送我一个冰激凌,当然这是生活的例子,实际工作中,我们往往会遇到一些需要代理,但又不想给全部权限,

这时我们可以赋予代理类一个只有局部权限的对象。

下面是就刚刚例子的JAVA代码:

/**
 * 拥有共同行为的接口
 */
public interface ISubject {

    public void buyKole();
}

 

/**
 * 室友,帮买可乐
 */
public class ProxyRoommate implements ISubject{

    private RealSubjectI realSubjectI;

    public ProxyRoommate(RealSubjectI realSubjectI) {
        this.realSubjectI = realSubjectI;
    }

    @Override
    public void buyKole() {
        //TODO 这里可以做很多事情,甚至决定不去执行买可乐
        realSubjectI.buyKole();
        System.out.println("心情好送你一块冰激凌");
    }
}

 

/**
 * 被代理类
 */
public class RealSubjectI implements ISubject{

    @Override
    public void buyKole() {
        System.out.println("去买可乐");
    }
}

 

/**
 * 客户端
 */
public class Test {

    public static void main(String[] args) {

        ProxyRoommate proxyRoommate = new ProxyRoommate(new RealSubjectI());
        proxyRoommate.buyKole();
    }
}

 

 

以上是笔者对代理模式的理解,希望能帮助正在学习设计模式的童鞋!

java 之 代理模式(大话设计模式)

标签:log   oom   分享图片   权限   str   帮助   设计   ring   style   

原文地址:http://www.cnblogs.com/zhuxiansheng/p/7891755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!