设计模式之代理设计模式简单实践


1.顶级接口类--定义共性规则

package com.git.base.designpatterns.proxy;
/**
 * 
 * <p>Title: ReadBook.java</p>
 * <p>Description:代理设计模式之 代理抽象类 </p>
 * <p>Copyright: Copyright (c) 2016</p>
 * <p>Company: Sage</p>
 * @author 五虎将
 * @date 2016年5月3日下午10:49:06
 * @version 1.0
 */
public interface ReadBook {

	public void read();
}

2.核心类--定义核心的功能代码

package com.git.base.designpatterns.proxy;

public class ReadBookInstance  implements ReadBook{

	@Override
	public void read() {
		System.out.println("读书ing");
	}

}

3.代理类 ---实现核心代码外的额外操作


package com.git.base.designpatterns.proxy;
/**
 * 
 * <p>Title: ProxyReadBook.java</p>
 * <p>Description:读书的代理类 用于完成读书的主方法外的额外方法</p>
 * <p>Copyright: Copyright (c) 2016</p>
 * <p>Company: Sage</p>
 * @author 五虎将
 * @date 2016年5月3日下午10:46:05
 * @version 1.0
 */
public class ProxyReadBook implements ReadBook{

	private ReadBookInstance read;
	
	/**
	 * 重点在这里--这里在引申一下就是一个典型的AOP了
	 * <p>Title: read</p>
	 * <p>Description: </p>
	 * @see com.git.base.designpatterns.proxy.ReadBook#read()
	 */
	@Override
	public void read() {
		System.out.println("获取到书籍 准备进行读取!");
		read.read();//读书主方法
		System.out.println("读书结束 书籍归位处理!");
	}

	public ReadBookInstance getRead() {
		return read;
	}

	public void setRead(ReadBookInstance read) {
		this.read = read;
	}

}


4.代理模式测试类


package com.git.base.designpatterns.proxy;

public class ProxyTest {

	public static void main(String[] args) {
		
		ReadBookInstance read = new ReadBookInstance();
		ProxyReadBook proxy = new ProxyReadBook();
		proxy.setRead(read);
		proxy.read();
		
	}
}













你可能感兴趣的:(设计模式,代理设计模式)