public class 代理模式
{
/*
1. 追求者与被追求者共同继承同一个对象.
2. 追求者的行为方式,依据接口来实现.
3. 中间这个类.衔接 追求者和被追求者之间的平衡. 内置追求者. 把被追求者作为参数进行传入.
*/
interface GiveGift
{
void GiveDools();
void GiveFlowers();
void GiveChocolate();
}
public abstract class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class SchoolGirl : Person
{
}
public class PursuitBoy : Person, GiveGift
{
public void GiveChocolate()
{
Console.WriteLine($"{_schoolGirl.Name} :送你巧克力");
}
public void GiveDools()
{
Console.WriteLine($"{_schoolGirl.Name} :送你洋娃娃");
}
public void GiveFlowers()
{
Console.WriteLine($"{_schoolGirl.Name} :送你鲜花");
}
public PursuitBoy(SchoolGirl schoolGirl)
{
_schoolGirl = schoolGirl;
}
protected Person _schoolGirl { get; set; }
//设置被追求者.
public void UpdateGirlObj(Person schoolGirl)
{
_schoolGirl = schoolGirl;
}
}
public class Proxy : GiveGift
{
protected PursuitBoy _pursuitBoy { get; set; }
//设置追求者
public void setPursuitObj(PursuitBoy pursuit)
{
_pursuitBoy = pursuit;
}
public void GiveChocolate()
{
_pursuitBoy.GiveChocolate();
}
public void GiveDools()
{
_pursuitBoy.GiveDools();
}
public void GiveFlowers()
{
_pursuitBoy.GiveFlowers();
}
}
public static void TestData()
{
ConsoleFormate.consoleFormate(() =>
{
SchoolGirl schoolGirl = new SchoolGirl() { Name = "娇娇", Age = 18 };//被追求者.
PursuitBoy pursuit = new PursuitBoy(schoolGirl); //追求者
Proxy _proxy = new Proxy();//创建一个代理.
_proxy.setPursuitObj(pursuit);//代理这个追求者送礼物.
_proxy.GiveChocolate();
_proxy.GiveDools();
_proxy.GiveFlowers();
Console.WriteLine("\r\n \r\n");
}, @"代理模式");
}
}