23種設計模式之抽象工廠模式
阿新 • • 發佈:2017-08-21
tor turn sql數據庫 png insert face sign 相關 reat
抽象工廠模式(Abstract Factory):提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。
package designMode.abstractFactory; class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() {return name; } public void setName(String name) { this.name = name; } }
package designMode.abstractFactory; class Dept { private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } }
package designMode.abstractFactory;interface IUser { void insert(User user); User getUser(int id); }
package designMode.abstractFactory; interface IDept { void insertDept(Dept dept); Dept getDept(int id); }
package designMode.abstractFactory; class OracleUser implements IUser{ @Overridepublic void insert(User user) { System.out.println("在Oracle數據庫中給user表新增一條記錄!"); } @Override public User getUser(int id) { System.out.println("在Oracle數據庫中根據用戶id得到user表一條記錄!"); return null; } }
package designMode.abstractFactory; class OracleDept implements IDept{ @Override public void insertDept(Dept dept) { System.out.println("在Oracle數據庫中給dept表新增一條記錄!"); } @Override public Dept getDept(int id) { System.out.println("在Oracle數據庫中根據id獲取dept表中的一條記錄!"); return null; } }
package designMode.abstractFactory; class MysqlUser implements IUser{ @Override public void insert(User user) { System.out.println("在Mysql數據庫中給user表新增一條記錄!"); } @Override public User getUser(int id) { System.out.println("在Mysql數據庫中根據用戶id得到user表的一條記錄!"); return null; } }
package designMode.abstractFactory; class MysqlDept implements IDept{ @Override public void insertDept(Dept dept) { System.out.println("在Mysql數據庫中給dept表新增一條記錄!"); } @Override public Dept getDept(int id) { System.out.println("在Mysql數據庫中根據id獲取dept表的一條記錄!"); return null; } }
package designMode.abstractFactory; interface IFactory { IUser createUser(); IDept createDept(); }
package designMode.abstractFactory; class OracleFactory implements IFactory{ @Override public IUser createUser() { return new OracleUser(); } @Override public IDept createDept() { return new OracleDept(); } }
package designMode.abstractFactory; class MysqlFactory implements IFactory{ @Override public IUser createUser() { return new MysqlUser(); } @Override public IDept createDept() { return new MysqlDept(); } }
package designMode.abstractFactory; class Test { public static void main(String[] args) { User user = new User(); Dept dept = new Dept(); //IFactory factory = new OracleFactory(); IFactory factory = new MysqlFactory(); IUser iu = factory.createUser(); iu.insert(user); iu.getUser(1); IDept id = factory.createDept(); id.insertDept(dept); id.getDept(1); } }
23種設計模式之抽象工廠模式