代理设计模式

代理设计模式:两个字类共同实现一个接口,其中一个子类负责真实业务的实现,另外一个子类完成辅助真实业务主题的操作。

场景假设,我们在买手机的时候,仅仅完成的是一个买手机的过程,而在买手机的前后过程还包括制造手机,手机的售后服务等,这些都是隐含在买手机中的,生产手机、手机售后保障都是交由其它的来负责。

//业务为买手机
interface ISubject {
	void buyPhone();
}
//真实业务
class RealSubject implements ISubject {
	public void buyPhone() {
		System.out.println("买一部华为手机");
	}
}
//辅助业务
class ProxySubject implements ISubject {
	//真实的业务
	private ISubject subject;
	//通过构造函数去取得RealSubject的实例化对象
	public ProxySubject(ISubject subject) {
		this.subject = subject;    //此时this.subject = RealSubject的哈希值
	}
	public void producePhone() {
		System.out.println("1.生产华为手机");
	}
	public void afterSale() {
		System.out.println("3.华为售后团队");
	}
	public void buyPhone() {
		this.producePhone();
		this.subject.buyPhone();
		this.afterSale();
	}
}
class Factory {
	public static ISubject getInstance() {
		return new ProxySubject(new RealSubject());
	}
}
public class Test {
	public static void main(String[] args) {
		ISubject subject = Factory.getInstance();
		subject.buyPhone();
	}
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值