当前位置: 代码迷 >> Java Web开发 >> DAO设计形式中的代理类和工厂类都是啥用的
  详细解决方案

DAO设计形式中的代理类和工厂类都是啥用的

热度:7307   发布时间:2013-02-25 21:16:44.0
DAO设计模式中的代理类和工厂类都是啥用的
刚熟悉了下DAO设计模式
但一直看不懂 代理类和工厂类
说代理类是处理真实主题的
社么是真实主题

------解决方案--------------------------------------------------------
Java code
class User {    private String name;    private int age;    public void setName(String name){        this.name=name;    }    public void setAge(int age){        this.age=age;    }    public String getName(){        return this.name;    }    public int getAge(){        return this.age;    }}interface UserDAO {    public boolean doCreate(User user)throws Exception;}class UserDAOImpl implements UserDAO {    private String str=null;    public UserDAOImpl(String str){        this.str=str;    }    public boolean doCreate(User user)throws Exception{        boolean flag=false;        try{            System.out.println("真实主题类的数据库增加操作");        }catch(Exception e){            e.printStackTrace();        }finally{                    }        return flag;    }}class UserDAOProxy implements UserDAO {    private UserDAOImpl dao=null;    private String str=null;        //此处其实应该传入一个数据库的连接到真实主题类的,不过这里只是个演示,所有以字符串的形式传了进去    public UserDAOProxy(){        this.str=new String();        this.dao=new UserDAOImpl(this.str);    }    public boolean doCreate(User user)throws Exception{        boolean flag=true;        System.out.println("代理类的操作,打开数据库,同时取得真实主题类的实例去调用真实的数据层操作");        try{            this.dao.doCreate(user);        }catch(Exception e){            e.printStackTrace();        }finally{            System.out.println("代理类的操作,调用完真实主题类的操作,同时关闭数据库");        }        return flag;    }}class UserDAOFactory {    public static UserDAO getUserDAONewInstance(){        System.out.println("通过工厂类取得代理类的实例去调用代理类的操作。");        return new UserDAOProxy();    }}public class FactoryDemo {    public static void main(String args[])throws Exception{        User user=new User();        user.setName("jhjjs");        user.setAge(20);        UserDAOFactory.getUserDAONewInstance().doCreate(user);    }}
  相关解决方案