設計モードのエージェント設計モードの簡単な実践


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();
		
	}
}