设计模式之代理模式

1,什么是代理设计模式

代理类引用被代理类,对被代理类的功能进行取舍然后封装后为提供给使用者,这叫做代理设计模式.

2,为什么要使用代理设计模式

有一个软件外包公司,它们既承接欧美项目的业务,也承接日本项目的业务,但是他们在面对日本客户的时候,不愿意让日本客户知道他们向欧美提供了哪些外包业务,这个时候我们想要屏蔽掉提供给欧美业务的方法,让日方不知道,那么可以考虑增加一个代理类来屏蔽掉公司对欧美的业务.

3,怎么使用代理设计模式

关于刚才示例的UML

 

 为了让JanpaneseClient(日本客户)不知道EpibolySoftwareCompany(软件外包公司)的overseasbusiness()(欧美方面业务),我们设计了一个代理类JanpaneseAgency,去屏蔽EpibolySoftwareCompany的overseasbusiness.让JanpaneseClient只能访问EpibolySoftwareCompany的 janpanesebusiness()(日本方面业务).

具体代码实现:

Janpanesebusiness.interface

public interface Janpanesebusiness {
	public void janpanesebusiness();
}

Overseasbusiness.interface

public interface Overseasbusiness {
	public void overseasbusiness();
}

EpibolySoftwareCompany.class

public class EpibolySoftwareCompany implements Overseasbusiness,Janpanesebusiness{
	public void overseasbusiness(){
		System.out.println("欧美业务部分");
	}
	public void janpanesebusiness(){
		System.out.println("日本业务部分");
	}
}

JanpaneseAgency.class

public class JanpaneseAgency implements Janpanesebusiness{
	private EpibolySoftwareCompany epibolySoftwareCompany = null;
	public JanpaneseAgency(EpibolySoftwareCompany epibolySoftwareCompany){
		this.epibolySoftwareCompany = epibolySoftwareCompany;
	}
	public void janpanesebusiness(){
		epibolySoftwareCompany.janpanesebusiness();
	}
}

JanpaneseClient.class

public class JanpaneseClient {
	private Janpanesebusiness janpanesebusiness = null;
	public JanpaneseClient(Janpanesebusiness janpanesebusiness){
		this.janpanesebusiness = janpanesebusiness;
	}
	public void talkOperation(){
		System.out.println("洽谈业务");
		//与代理洽谈业务
		janpanesebusiness.janpanesebusiness();
	}
}

Main.class

public class Main {
	public static void main(String[] args){
		EpibolySoftwareCompany epibolySoftwareCompany = new EpibolySoftwareCompany();
		JanpaneseAgency janpaneseAgency = new JanpaneseAgency(epibolySoftwareCompany);
		//日本客户传入代理的引用
		JanpaneseClient janpaneseClient = new JanpaneseClient(janpaneseAgency);
		janpaneseClient.talkOperation();
	}
}

运行结果:

洽谈业务
日本业务部分

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值