java 设计模式——静态代理

代理模式,首先举个例子如你想找房子,可以直接跟房主联系,也可以找中介,中介就是房主的代理


在java中,我们首先定义一个接口或抽象类(Subject),然后定义一个实际类就象房主(RealObject)他实现或继承了Subject,然后再定义一个代理类

也就是我们的中介类(ProxyObject),让他和房主一样都实现或继承Subject,并且代理内部引用了真实角色 (RealObject)并用它去完成相关的操作


代码如下所示

Subject 接口

package com.xwei.proxy;

public interface Subject {

	public void reduce();
}

RealObject 实际类(房主)

package com.xwei.proxy;

public class RealObject implements Subject {

	public void reduce() {
		System.out.println("From the RealObject");
	}

}

代理类(ProxyObject) 就跟中介一样

package com.xwei.proxy;

public class ProxyObject implements Subject{

	//代理内部引用了真实角色 
	private RealObject realObject;
	
	// 
	public void reduce()
	{
		//真正角色操作之前的附加操作   帮你介绍了房子,给点中介费吧
		this.preReduce();
		
		if(null==realObject)
		{
			//房主
			realObject = new RealObject();
		}
		
		//真正角色去完成的事 房主给你房子
		realObject.reduce();
		
		//真正角色操作之后的附加操作  中介
		this.postReduce();
	}
	
	private void preReduce()
	{
		System.out.println("pre ClientObject ");
	}
	
	private void postReduce()
	{
		System.out.println("post ClientObject ");
	}
}

测试类


package com.xwei.proxy;

public class ClientTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		//你是可以看到代理的
		Subject proxyObject = new ProxyObject();
		proxyObject.reduce();
	}

}

打印结果

pre ClientObject 
From the RealObject
post ClientObject 



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值