java中代理設計模式與工廠類設計模式的綜合應用
public class TestDemo11 {
/**
* 主方法是客戶端,只關心取得通過工廠類取得例項化物件,不關係到底工廠類如何取得,
* 更不會關係主題類是如何例項化介面的,才不會關中間有經歷過那寫不為人知的操作
* 總而言之:主方法不應該做太多有關內部操作,只需要結果即可(即也就是取得例項化的介面物件)
* 代理設計模式與工廠類設計模式的應用
* @throws Exception
*/
public static void main(String[] args) throws Exception {
IDeptSevice ideptsevice=FactoryDeptSevice.getIDeptSeviceInstance();
ideptsevice.insert();
}
}
interface IDeptSevice //業務層介面(所有代理層,都是為業務層服務)
{
public boolean insert()throws Exception;
}
class DeptSeviceImpl implements IDeptSevice//真實主題實現類
{
@Override
public boolean insert() throws Exception {
System.out.println("*****呼叫資料層諾幹操作");
return true;
}
}
class DeptSeviceProxy implements IDeptSevice//代理主題類:(代理類負責真實主題類與其它之間的呼叫)
{
private IDeptSevice deptsevice;
public DeptSeviceProxy(IDeptSevice deptsevice)
{
this.deptsevice=deptsevice;
}
public void prepare()
{
System.out.println("****操作前的準備,開啟資料庫連線操作");
}
@Override
public boolean insert() throws Exception {
prepare();
boolean flag=deptsevice.insert();
destory();
return flag;
}
public void destory()
{
System.out.println("****操作後的準備,關閉資料庫連線");
}
}
class FactoryDeptSevice //用工廠類負責對介面類,主題類例項化物件
{
public static IDeptSevice getIDeptSeviceInstance()
{
return new DeptSeviceProxy(new DeptSeviceImpl());
}
}