代理设计模式

1.先上代码

package lpq;
//抽象接口:描述真实角色和代理角色的共同接口
interface PenInterface{
	void sellPen();
}
//实体类
class PenProduce implements PenInterface{
	String customerName;
	PenProduce(String name){
		this.customerName=name;
	}
    public void sellPen(){
    	System.out.println("The pen is sold to "+this.customerName);
    }
}
//代理类
class PenProxy implements PenInterface{
	PenProduce penproduce;
	PenProxy(String name){
		penproduce=new PenProduce(name);
	}
	public void sellPen(){
		penproduce.sellPen();
	}
}

public class Customer {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		PenProxy penproxy=new PenProxy("liupenqiang");
		penproxy.sellPen();
	}
}
其中包含三个角色

1)抽象角色:实体类和代理类的共同接口,其实是实体类对外的接口;

2)真实角色:即代码中的实体类,是我们最终操作的对象;

3)抽象角色:我们表面上操作的对象,其中包含了对真实角色的引用,另外可以包装一些对真实对象的操作


2.代理模式的好处:

1)可以在代理类中封装一些额外的附加操作,对系统做一些扩展;

3.使用场景

使用场景:

1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

2)虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的对象。

3)安全代理,用来控制真实对象访问时的权限。

4)智能指引,当调用目标对象时,代理可以处理其他的一些操作。







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值