面向对象设计模式之---代理模式(Proxy Pattern)

    好久都没有写文章了呢,最近比较忙,一个是课业比较忙,还有一个打算要进修,在准备考试。这几天老师要求做一个记事本(Android课的作业),需要使用到SQLite数据库,肯定很自然的想到数据的增删改查。在以往的项目中,自己都挺随性的,把真正的查询逻辑和其它一些功能写在一起,这样的结果就是导致维护起来很难。刚好最近学校要求我把我的作品申请专利,申请专利需要找一个专利的代理商,然后再由代理商来找真正的专利局来进行申请的操作。我想,上个学期在上JavaEE课程的时候,老师有提到过代理模式,那时候体会还不是很深,现在想想,面向对象设计模式中的代理模式,是不是与申请专利找代理商的过程一样样的呢?我度娘求证了一下,还真是!

  我们就以模拟申请专利的过程为例,来说明一下什么是代理模式(Proxy Pattern)

  1、UML类图

   

 说明:在这个设计模式中,我定义了一个接口Patent(专利),接口中有一个方法,apply(申请),然后定义两个类,PatentOffice(专利局),PatentAgency(专利代理商)来实现这个接口。其中

a、在PatentOffice类中,有一个私有的成员变量name,表示专利名;同时,除了构造方法外,重写了apply方法,实现申请专利的过程。

b、在PatentAgency类中,有一个私有的成员变量po,这个po是PatentOffice类的一个对象;同时,除了构造方法,它也重写了apply方法,在这个apply方法中,我们将调用PatentOffice类中的apply方法。显然,这时一个代理商找真正机构的过程,这个就是代理模式的思想。我们只要把需要的材料交给代理商,剩下的过程我们不必关心,让代理商去处理,我们只要等结果就好了~

2、代码实现

 

interface Patent
{
	public void apply();
}

class PatentOffice implements Patent
{
	private String name;
	
	PatentOffice(String name)
	{
		this.name = name;
	}
	
	@Override
	public void apply() {
		// TODO Auto-generated method stub
		System.out.println("Your Patent:");
		System.out.println("\""+name+"\" has been authorized!");
	}
	
}

class PatentAgency implements Patent
{
	private PatentOffice po;
	
	PatentAgency(String name)
	{
		po = new PatentOffice(name);
	}
	
	@Override
	public void apply() {
		// TODO Auto-generated method stub
		po.apply();
	}
	
}

public class Main 
{
	public static void main(String[] args)
	{
		Patent pa = new PatentAgency("A fantastic method to solve the problem in Computer Sicence");
		pa.apply();
	}
}

说明:

1、name变量是ProxyOffice私有的,ProxyAgency只需要接收,不需要保存,是一个传递的作用,我们利用这个name来实例化ProxyOffice对象。

运行效果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值