大话设计模式之代理模式

对于广大男同胞来说,泡妞是一件很正常的事情,然而有些羞答答的男生,却缺乏主动,从而不敢主动出击,而是通过朋友来传递对喜爱的女生的爱慕之情,帮忙送礼物啥的,最后不但没有泡妞成功,反而给朋友泡了心爱的女生,实在悲惨之至,然而,作为程序员的我们,如果学过设计模式,可能就不会烦这种错误,这是一个代理模式的最好体现了,补充一句,代理模式用途很广,前面是开玩笑的哈!如果要实现这个泡妞的过程,我们可以用代码来实现以下。

设计步骤:

第一步:创建一个女生对象。

//妹纸
public class SchoolGirl {
	
	private String name;
	
	public SchoolGirl(){
		
	}
	
	public SchoolGirl(String name){
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}


第二步:定义一个送礼物的接口,可以送花,送巧克力,或者送布娃娃,或者其它。

//送礼物接口
public interface SendPresent {
	
	public void sendFlowers();
	
	public void sendDoll();
	
	public void sendChocolate();
}


第三步:创建一个追求者类,该类实现接口SendPresent,里面存有一个被追求者对象。
//追求者
public class Persuitor implements SendPresent{
	
	private SchoolGirl sg;
	
	private String name;
	
	public Persuitor(String name, SchoolGirl sg) {
		this.name = name;
		this.sg = sg;
	}
	
	public void sendFlowers() {
		System.out.println(sg.getName() + "," + this.name + "送你花");
	}
	
	public void sendDoll() {
		System.out.println(sg.getName() + "," + this.name + "送你布娃娃");
	}
	
	public void sendChocolate() {
		System.out.println(sg.getName() + "," + this.name + "送你巧克力");
	}
}


第四步:现在当然就是创建代理了,就是帮忙送礼物的好朋友,慎重哦!该类也实现接口 SendPresent,同时存放一个Persuitor对象引用,用于对Persuitor进行代理,在代理类中不需要实现具体的方法,只需要调用真正对象的方法即可,理由很简单,因为它是代理嘛!
//代理
public class Proxy implements SendPresent{
	
	private Persuitor persuitor;
	
	public Proxy(SchoolGirl sg) {
		this.persuitor = new Persuitor("聪聪", sg);
	}
	
	public void sendFlowers() {
		//调用真实对象的方法,也可以在调用此方法时进行其它的逻辑处理
		persuitor.sendFlowers();
	}
	
	public void sendDoll() {
		persuitor.sendDoll();
	}
	
	public void sendChocolate() {
		persuitor.sendChocolate();
	}
	
}


第五步:最后就是测试了。具体的操作由代理来完成,不需要由真实对象来执行。
//测试类
public class Test {
	
	 public static void main(String[] args) {
		 SchoolGirl sg = new SchoolGirl("晴晴");
		 Proxy proxy = new Proxy(sg); //代理
		 
		 proxy.sendChocolate();
		 proxy.sendDoll();
		 proxy.sendFlowers();
	}
}
程序运行结果如下:
晴晴,聪聪送你巧克力
晴晴,聪聪送你布娃娃
晴晴,聪聪送你花

总结:代理模式在这个程序里面把具体的对象和它需要关联的对象分离开了,通过代理来连接,代理不单可以完成具体的对象的行为,同时可以对具体对象进行一些其他的一些逻辑处理。

代理模式定义:为其他对象提供一个代理以控制对这个对象的访问。
应用场景:
1.远程代理,也就是为一个对象在不同的地址空间提供局部代表,隐藏一个对象
  存在于不同地址空间的事实。
2.虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时
  间的真实对象。
3.安全代理,用来控制真实对象访问时的权限。
4.智能指引,是指当调用真实的对象时,代理处理另外一些事。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值