using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Proxy
{
//西瓜接口
public interface IWatermelon
{
//生产西瓜的方法
void product();
//销售西瓜的方法
void sell();
}
//西瓜生产工厂
public class WatermelonFactory :IWatermelon
{
public void product()
{
Console.WriteLine("农民伯伯在地里种出西瓜...");
}
public void sell()
{
Console.WriteLine("农民伯伯销售西瓜...");
}
}
//西瓜代理商
public class WatermelonProxy :IWatermelon
{
//从农民伯伯手里收购西瓜
private IWatermelon watermelon;
public WatermelonProxy (IWatermelon watermelon)
{
this.watermelon = watermelon;
}
public void product()
{
this.watermelon .product ();
Console.WriteLine("代理商从农民伯伯手里收购西瓜...");
}
public void sell()
{
Console.WriteLine("代理商从农民手里低价收购西瓜,然后以较高的价格销售,从中赚取一定的差价...");
}
}
class Program
{
static void Main(string[] args)
{
//创建西瓜生产工厂
IWatermelon watermelonFactory = new WatermelonFactory();
//获得代理对象实例
IWatermelon watermelonProxy = new WatermelonProxy(watermelonFactory );
//代理商生产西瓜(其实是农民伯伯种出西瓜)
watermelonProxy.product();
//代理商销售西瓜(低价收购西瓜,然后以较高价格出售,赚取差额利润)
watermelonProxy.sell();
}
}
}
装饰者:装饰者重点在与添加附加行为修饰被装饰者。
代理:代理的重点是代替本人作业,减少对实际对象的操作。
原文地址:http://blog.csdn.net/ry513705618/article/details/39255399