问题的提出

现在生活中,常常在微信朋友圈里面看到代购的信息,你想在国外买什么,香港买什么,但是又懒得自己过去,于是常常委托别人帮忙买奶粉买那啥的。这类问题的缘由是因为客户和原产地没有直接的接触,所以需要一个代理(代购)的第三者来实现间接引用。代理对象可以在客户端和目标对象间起到中介作用,而且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。代理模式是一种很好实现客户对象与代理对象分离的策略。其抽象UML图如下图

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

代理模式包含如下角色

ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理公用的接口。

RealSubject:真实的主题角色,是实现主题接口的类。

Proxy:代理角色,内部含有对真实对象RealSubject的引用,从而可以操作真实对象。代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。

买电视为例

1)定义抽象主题-买电视

public interface ITV {    public void buyTV();
}

2)定义实际主题-买电视过程

public class Buyer implements ITV {    public void buyTV(){
        System.out.println("I have bought the TV by buyer proxy");
    }
}

3)定义代理

网友评论