标签:
为其他对象提供一种代理以控制对这个对象的访问。
下面的列子是学校代理追求女孩送礼物的是过程:
一、女孩
1 /// <summary> 2 /// 被追求 3 /// </summary> 4 public class SchoolGirl 5 { 6 private string name; 7 public string Name 8 { 9 get { return name; } 10 set { name = value; } 11 } 12 }
二、代理基类
1 public abstract class GiveGift 2 { 3 public abstract void GiveFlower(); 4 }
三、追求者
1 /// <summary> 2 /// 追求-发起方 3 /// </summary> 4 public class Pursuit : GiveGift 5 { 6 SchoolGirl mm; 7 public Pursuit(SchoolGirl mm) 8 { 9 this.mm = mm; 10 } 11 12 public override void GiveFlower() 13 { 14 Console.WriteLine(mm.Name + "这是送给你的!"); 15 } 16 }
四、代理者
1 /// <summary> 2 /// 代理类 第三者 3 /// </summary> 4 public class Proxy : GiveGift 5 { 6 Pursuit p; 7 public Proxy(SchoolGirl mm) 8 { 9 this.p = new Pursuit(mm); 10 } 11 public override void GiveFlower() 12 { 13 p.GiveFlower(); 14 } 15 }
五、执行
1 /// <summary> 2 /// 代理模式 - 为其他对象提供一种代理以控制对这个对象的访问。代理类,可以替换功能类。里氏代换原则! 3 /// </summary> 4 public class DoProxy : DesignPattern 5 { 6 public override void ExeFun() 7 { 8 SchoolGirl jiaojiao = new SchoolGirl() { Name = "娇娇" }; 9 Proxy daili = new Proxy(jiaojiao); 10 daili.GiveFlower(); 11 } 12 }
标签:
原文地址:http://www.cnblogs.com/pasture-code/p/4561278.html