代理模式,为其它对象提供一种代理以控制对这个对象的访问。代理是真实对象的代表。说的简单点就是通过一个中介为我们完成某件事。举个简单的例子:就拿我们租房这件事来说,我们想要租房首先需要找到中介,由中介为我们联系房主,帮我们完成租房这一过程。用代码表示如下:
class House-owner
{
//房东类,用于定义和获取不同房东的名字
privatestring name;
publicstring Name
{
get{return name;}
set{name=vlaue; }
}
}
//租房接口
interface IRenting
{
voidRenting_a_house();
}
classHouse-renter:IRenting
{
//租房者类,初始化获得房东实例
House-ownermm;
publicHouse-renter(House-owner mm)
{
this.mm=mm;
}
//租房者提出租房请求
publicvoid Renting_a_house()
{
console.WriteLine(mm.Name+"我想租房");
}
}
classZhongJie:IRenting
{
//中介类,房东和租房者中间的桥梁
House-rentergg;
publicZhongJie(House-owner mm)
{
gg=newHouse-renter(mm);
}
//中介为租房者向房东提出租房请求
publicvoid Renting_a_house()
{
gg.Renting_a_house();
}
}
而在主函数中则通过这个zhongjie类来完成租房者的功能
House-owner hh=newHouse-owner();
hh.Name="房东1";
ZhongJiezhongjie=new ZhongJie(hh);
zhongjie.Renting_a_house();
在此过程中,房东和租房者互不相识,ZhongJie类充当的就是代理这个角色,帮助租房者完成租房这一功能。
相信看了上面的介绍会对代理模式有个更深的认识。但此时我却有点迷惑,是关于策略模式和代理模式的,这两个模式都是通过一个中间类来完成另外一个类的实例化和其功能,但是不知这两个模式又有什么区别呢?望各位大能指点迷津。