`
iluoxuan
  • 浏览: 571087 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

代理模式--------静态代理

 
阅读更多

代理模式:故名思议就是通过其他的对象来代替本身做些事情,比如:买房子的整个过程

 

1:生成房子的要销售房子,但是会通过 中介公司 销售 他们的房子给客户

 

其中 中介公司就相当于代理了 该房子的 销售权利,该权利必须 是两方所共有的,而实现不同;所以是接口中的一个方法

就是代理对象和实际对象公用一个接口,而代理必须持有对实际对象的引用

 

图 1. 代理模式

如下:

 

        package com.porxy;

public interface Sell {   	
	  public void sellHouse();
}

 

 

生成商的如下:

 

 

package com.porxy;

public class HouseFactory implements Sell {

	public void sellHouse() {
		System.out.println("房子生产商被调用了");
	}

}

 

 

代理商如下:

 

package com.porxy;

public class SellProxy implements Sell {

	// 这个对象可以用ioc来注入
	private HouseFactory houseFactory;

	// 代理的实体类对象实例化
	public SellProxy(HouseFactory houseFactory) {
		this.houseFactory = houseFactory;
	}

	public void sellHouse() {
		System.out.println("代理销售房子前作的事情");
		houseFactory.sellHouse();
		System.out.println("代理销售房子的后作的事情");
	}

}

 

 

通过代理可以再买房子前后作一些相关的事情,这也就是AOP的大概思路。

 

测试如下:

 

      package com.porxy;

public class TestProxy {

	public static void main(String[] args) {

		Sell sell1 = new SellProxy(new HouseFactory());
		sell1.sellHouse();

	}

}
 

  结果:

结果如下:
代理销售房子前作的事情
房子生产商被调用了
代理销售房子的后作的事情

从中可以看到静态代理的对象时固定的,每一个代理就要写个接口,那样的话
在实际的过程是不可能的所以我们需要的是动态的代理
 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics