using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 代理模式 { //追求者的方法 public interface GiveGift { //这里运用的接口 ,也可以运用抽象类 void GiveDoll(); void GiveFlowers(); void GiveChocolate(); } public class Pursuit :GiveGift { SchoolGirl mm; public Pursuit(SchoolGirl mm) { this.mm = mm; } public void GiveDolls() { Console.WriteLine(mm.Name +"送你洋娃娃"); } public void GiveFlowers() { Console.WriteLine(mm.Name + "送你鲜花"); } public void GiveChocolate() { Console.WriteLine(mm.Name +"送你巧克力"); } } //追求者 public class Proxy : GiveGift //代理者 { Pursuit gg; public Proxy(SchoolGirl mm) { gg = new Pursuit(mm); } public void GiveDolls() { gg.GiveDolls(); } public void GiveFlowers() { gg.GiveFlowers(); gg.GiveChocolate(); } public void GiveChocolate() { gg.GiveChocolate(); } } //被追求者类 public class SchoolGirl { private string name; public string Name { get { return name; } set { name = value; } } } class Program { static void Main(string[] args) { SchoolGirl jiaojiao = new SchoolGirl(); jiaojiao.Name = "李娇娇"; Proxy daili = new Proxy(jiaojiao); daili.GiveDolls(); daili.GiveFlowers(); daili.GiveChocolate(); Console.ReadKey(); } } }
Proxy(代理者) Pursuit(追求者) ,
理解: 追求者 想去送鲜花,想去送洋娃娃,想去送巧克力
public class Pursuit { SchoolGirl mm; public Pursuit(SchoolGirl mm) { this.mm = mm; } public void GiveDolls() { Console.WriteLine(mm.Name +"送你洋娃娃"); } public void GiveFlowers() { Console.WriteLine(mm.Name + "送你鲜花"); } public void GiveChocolate() { Console.WriteLine(mm.Name +"送你巧克力"); } }
可在对其进行实例化调用时候,发现 追求者 与被追求者,有直接的接触 ,明显不符合要求 ;
Pursuit zhuojiayi = new Pursuit(jiaojiao);
追求者需要把 送花 ,送洋娃娃,送巧克力的意思,告诉,代理人(代理人,也可以具有,送花,送洋娃娃,送巧克力的方法,但 是,代理人,是帮追求送,肯定需要实现代追求者的 送 ......)
(追求者,与代理人,都具有送花,送洋娃娃,送巧克力的技能,这里,理所当然,就运用了接口,或者抽象类)
在代理人的类中,实例化 追求者,然后,继承接口或者抽象类后,在实现接口或者抽象类的方法中,对应调用 已实例化的追求者的方法:
public class Proxy : GiveGift //代理者 { Pursuit gg; public Proxy(SchoolGirl mm) { gg = new Pursuit(mm); } public void GiveDolls() { gg.GiveDolls(); } public void GiveFlowers() { gg.GiveFlowers(); gg.GiveChocolate(); } public void GiveChocolate() { gg.GiveChocolate(); } }