《大话设计模式》——代理模式

1.为他人做嫁衣

1.1.结构图

《大话设计模式》——代理模式

1.2.代理接口

interface GiveGift{
	void GiveDolls();
	void GiveFlowers();
	void GiveChocolate();
}

1.3.追求者类

class Pursuit:GiveGift{
	SchoolGirl mm;
	public Puersuit(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+"送你巧克力");
	}
}

1.4.代理类

class Proxy:GiveGift{
	Pursuit gg;
	public Proxy(SchoolGirl mm){
		gg=new Pursuit(mm);
	}
	public void GiveDolls(){
		gg.GiveDolls();
	}
	public void GiveFlowers(){
		gg.GiveFlowers();
	}
	public void GiveChocolate(){
		gg.GiveChocolate();
	}
}

1.5.客户端代码

static void Main(string[] args){
	SchoolGirl jioajiao=new SchoolGirl();
	jiaojiao.Name="李娇娇";

	Proxy daili=new Proxy(jioajiao);

	daili.GiveDolls();
	daili.GiveFlowers();
	daili.GiveChocolate();

	Console.Read();
}

2.一般化代码

2.1结构图

《大话设计模式》——代理模式

2.2.Subject类

abstract class Subject{
	public abstract void Request();
}

2.3.RealSubject类

class RealSubject:Subject{
	public override void Request(){
		Console.WriteLine("真实的请求");
	}
}

2.4.Proxy类

class Proxy:Subject{
	RealSubject realSubject;
	public override void Request(){
		if(realSubject==null){
			realSubject=new RealSubject();
		}
		realSubject.Request();
	}
}

2.5.客户端代码

static void Main(string[] args){
	Proxy proxy=new Proxy();
	proxy.Request();

	Console.Read();
}
上一篇:2021安全员C考试每日一练单选题库


下一篇:小程序中轻松添加日期和时间的选择