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