Java设计模式《十一》抽象工厂模式

来源:互联网 发布:苹果软件图标不见了 编辑:程序博客网 时间:2024/06/03 15:22
//抽象工厂模式 提供一个创建一系列相关或者相互依赖对象的接口 而无须指定的他们具体的类
public interface IDepartment{    public void Insert(Department department);    public Department GetDepartment(int id);}//被DataAccess类替代public interface IFactory{    IUser CreateUser();    IDepartment CreateDepartment();}public interface IUSer{    public void Insert(User user);    pullic User GetUser(int id);}
public class  implements IFactory{    public IUser CreateUser(){        return new SqlserverUser();    }    public IDepartment CreateDepartment(){        return new SQLserverDepartment();    }}public class AccessFactory implements IFactory{    public IUser createUser(){        retturn new AccessUser();    }    public IDepartment CreateDepartment(){        return new AccessDepartment();    }}public class SqlserverUser implements IUSer{    public void Insert(User user){        System.out.prinltn("Insert Sqlserver User");    }    public User GetUser(int id){        System.out.prinltn("Get Sqlserver User");        return null;    }}public class AccessUser implements IUser{    public void insert(User user){        System.out.prinltn("Insert Access User");    }    public User GetUser(int id){        System.out.prinltn("Get Access User");        return null;    }}public class AccessDepartment implements IDepartment{    public void Insert(Department department){        System.out.prinltn("Insert Access Department");    }    public Department GetDepartment(int id){        System.out.prinltn("Get Access Department");        return null;    }}public class SQLserverDepartment implements IDepartment{    public void Insert(Department department){        System.out.prinltn("Insert into SQlServer");    }    public Department GetDepartment(int id){        System.out.prinltn("Get SQlServer Department");        return null;    }}public class Department implements IDepartment{    public void Insert(Department department){        System.out.prinltn("Insert Department");    }    public Department GetDepartment(int id){        System.out.prinltn("Get Department");        return null;    }}
public class User{    private int id;    private String name;    public int getId() {        return id;    }    public String getName() {        return name;    }    public void setId(int id) {        this.id = id;    }    public void setName(String name) {        this.name = name;    }}
//使用简单工厂来改进抽象工厂 可以抛弃Ifactory AccessFactory SqlFactory 三个工厂类public class DataAccess{    private static final String db ="SQlServer";//可以使用反射技术 在配置文件中配置数据库字符串    public static IUSer CreateUser(){        if(db.equals("SQlServer")){            return new SQlServer();        }        if(db.equals("Access")){            return new AccessUser();        }        return null;    }    public static IDepartment CreateDepartment(){        if(db.equals("SQlServer")){            return new SQLserverDepartment();        }        if(db.equals("Access")){            return new AccessDepartment();        }        return null;    }}
0 0
原创粉丝点击