代理模式是一种结构型模式,代理模式与装饰者模式的差异是什么呢? 两者的聚焦点不一样,代理模式聚焦的是访问控制,客户端不直接访问实际对象,而装饰者模式聚焦的是扩展功能,两者经常混用在一起。例如:房产中介是房子卖家的代理人,进行房屋的代理销售。
namespace Designmode.Proxy
{
/// <summary>
/// 卖房子接口
/// </summary>
public interface ISellHouse
{
/// <summary>
/// 出售
/// </summary>
void Sell();
}
}
namespace Designmode.Proxy
{
/// <summary>
/// 房子卖方
/// </summary>
public class HouseSeller : ISellHouse
{
public void Sell()
{
Console.WriteLine("卖房子");
}
}
}
namespace Designmode.Proxy
{
/// <summary>
/// 房产中介,是房子的卖方的代理
/// </summary>
public class RealEstateAgent : ISellHouse
{
/// <summary>
/// 房子的卖方
/// </summary>
public HouseSeller houseSeller = new HouseSeller();
/// <summary>
/// 卖房子
/// </summary>
public void Sell()
{
this.PushInfo();
houseSeller.Sell();
this.Transfer();
}
/// <summary>
/// 发布房产信息
/// </summary>
public void PushInfo()
{
Console.WriteLine("发布房产信息");
}
/// <summary>
/// 过户的扫尾工作
/// </summary>
public void Transfer()
{
Console.WriteLine("过户扫尾");
}
}
}