java中代理设计模式与工厂类设计模式的综合应用

来源:互联网 发布:知乎有趣问答 编辑:程序博客网 时间:2024/06/05 20:52
package cn.mdln.study2;


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());
}
}
0 0
原创粉丝点击