首页 >> 民生新闻

深入浅出基于的代理设计模式物业

民生新闻  2021-08-25 01:55 字号: 大 中 小

三、结构

代理模式中的“代理商”要想实现代理任务,就必须和被代理的“厂商”使用共同的接口(你可以想象为产品)。所以自然而然你会想到在java中使用一个抽象类或者接口(推荐)来实现这个共同的接口。于是代理模式就有三个角色组成了:

当当在凡客诚品、天猫商城、以及京东商城的多重夹击下推出自有品牌显然是冒了不少的风险 1.抽象主题角色:声明了真实主题和代理主题的共同接口。

2.代理主题角色:内部包含对真实主题的引用,并且提供和真实主题角色相同的接口。

3.真实主题角色:定义真实的对象。

使用类图来表示下三者间的关系如下:

当然,图上所示的是代理模式中的一个具体情况。而代理模式可以非常灵活的使用其他方式来实现,这样就与图上所示有很大的区别。

也许,现在你已经对代理模式已经有了一个宏观的认识了,下面我们来看看怎么实际的使用代理模式。

四、举例

以论坛中已注册用户和游客的权限不同来作为第一个例子:已注册的用户拥有发帖,修改自己的注册信息,修改自己的帖子等功能;而游客只能看到别人发的帖子,没有其他权限。为了简化代码,更好的显示出代理模式的骨架,我们这里只实现发帖权限的控制。 首先我们先实现一个抽象主题角色MyForum,里面定义了真实主题和代理主题的共同接口——发帖功能。

代码如下:

public interface MyForum

{

public void AddFile();

}

这样,真实主题角色和代理主题角色都要实现这个接口。其中真实的主题角色基本就是将这个接口的方法内容填充进来。所以在这里就不再赘述它的实现。我们把主要的精力放到关键的代理主题角色上。代理主题角色代码大体如下:

public class MyForumProxy implements MyForum

{

private RealMyForum forum ;

private int permission ; //权限值

public MyForumProxy(int permission)

{

forum = new RealMyForum()

rmission = permission ;

}

//实现的接口

public void AddFile()

{

//满足权限设置的时候才能够执行操作

//Constants是一个常量类

if(SOCIATOR == permission)

{

dFile();

}

else

intln(\"You are not a associator of MyForum ,please registe!\");

}

}

这样就实现了代理模式的功能。当然你也可以在这个代理类上添加自己的方法来实现额外的服务,比如统计帖子的浏览次数,记录用户的登录情况等等。

石家庄妇科较好医院
儿童助消化药大全
西宁治疗白癜风费用
推荐资讯