【设计模式】代理模式Proxy---静态代理

一、代理模式的理解

代理访问对象,执行方法。

二、举个例子:环保公司帮工厂做污水处理。

1、工厂和环保公司,签了污水处理合同。

这里,需要做两件事,创建接口IPublicManager,创建实现类ImpOut。

/**
 * 需求:公共接口类
 */
public interface IPublicManager {

		void out();//污水排出工厂
		
	}

/**
 * 合同:污水排出工厂的具体实现
 */
public class ImpOut implements IPublicManager {

		@Override
		public void out() {
				System.out.println("污水已经排出工厂...");  
			}
	}

2、环保公司开始筹划方案

这里,需要做一件事,创建ProxyObject实现IPublicManager

/**
 * 代理类
 */	
public class ProxyObject implements IPublicManager {

		private ImpOut impout;
		/**
		 * 合同传进来
		 */
		public ProxyObject(ImpOut impout){
			this.impout = impout;
		}

		@Override
		public void out() {
			//按合同办事
			impout.out();
		}
	}

3、环保公司执行方案

/**
 * 执行方案
 */		
public class Test {
	public static void main(String[] args) {
			ProxyObject proxyobject = new ProxyObject(new ImpOut());
			proxyobject.out();
		}
	}

以上部分属于静态代理模式,特点:

一对一:实现类、代理类和接口一对一。例如ImpOut、ProxyObject和IPublicManagerImpOut2、ProxyObject2和IPublicManager2,以此类推。

接口一样:实现类和代理类实现的接口,都是IPublicManager。

优势:接口不变的话,一劳永逸。

劣势:有新街口,就需要再写一个实现类。

总结:接口确定,建议用静态代理。接口不确定,动态代理模式。

PS:代理模式正解:根据参数,通过反射,动态生成代理类,并执行接口方法。此篇文章没体现这种思想,多谢下面这位朋友的提醒,下篇会有提到的。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值