package designpattern.abstractfactory; public abstract class employee { private string name; abstract void insert(employee employee); public string getname() { return name; } public void setname(string name) { this.name = name; } @override public string tostring() { return "employee [name=" + name + "]"; } }
package designpattern.abstractfactory; public class oracleemployee extends employee { @override void insert(employee employee) { system.out.println("往oracle数据库插入一条employee员工数据:" + employee); } }
package designpattern.abstractfactory; public class mysqlemployee extends employee { @override public void insert(employee employee) { system.out.println("往mysql数据库插入一条employee员工数据:" + employee); } }
package designpattern.abstractfactory; public abstract class department { string name; abstract void insert(department department); public string getname() { return name; } public void setname(string name) { this.name = name; } @override public string tostring() { return "department [name=" + name + "]"; } }
package designpattern.abstractfactory; public class oracledepartment extends department { @override void insert(department department) { system.out.println("往oracle数据库插入一条department部门数据:" + department); } }
package designpattern.abstractfactory; public class mysqldepartment extends department { @override void insert(department department) { system.out.println("往mysql数据库插入一条department部门数据:"+department); } }
package designpattern.abstractfactory; public interface factory { employee createemployee(); department createdepartment(); }
package designpattern.abstractfactory; public class mysqlfactory implements factory { @override public employee createemployee() { return new mysqlemployee(); } @override public department createdepartment() { return new mysqldepartment(); } }
package designpattern.abstractfactory; public class oraclefactory implements factory { @override public employee createemployee() { return new oracleemployee(); } @override public department createdepartment() { return new oracledepartment(); } }
package designpattern.abstractfactory; public class client { public static void main(string[] args) { factory factory = new mysqlfactory(); // factory factory=new oraclefactory(); employee employee = factory.createemployee(); employee.setname("张三"); employee.insert(employee); department department = factory.createdepartment(); department.setname("技术部"); department.insert(department); } }
往mysql数据库插入一条employee员工数据:employee [name=张三] 往mysql数据库插入一条department部门数据:department [name=技术部]
package designpattern.abstractfactory; public class simplefactory { static string db = "mysql"; //static string db="oracle"; static employee createemployee() { switch (db) { case "mysql": return new mysqlemployee(); case "oracle": return new oracleemployee(); default: return null; } } static department createdepartment() { switch (db) { case "mysql": return new mysqldepartment(); case "oracle": return new oracledepartment(); default: return null; } } }
package designpattern.abstractfactory; public class client2 { public static void main(string[] args) { employee employee = simplefactory.createemployee(); employee.setname("张三"); employee.insert(employee); department department = simplefactory.createdepartment(); department.setname("技术部"); department.insert(department); } }
package designpattern.abstractfactory; public class reflectsimplefactory { static string db = "mysql"; // static string db="oracle"; static string path = "designpattern.abstractfactory";// 包路径 static employee createemployee() { try { class<employee> employee = (class<employee>) class.forname(path + "." + db + "employee"); return employee.newinstance(); } catch (classnotfoundexception e) { e.printstacktrace(); } catch (instantiationexception e) { e.printstacktrace(); } catch (illegalaccessexception e) { e.printstacktrace(); } return null; } static department createdepartment() { try { class<department> department = (class<department>) class.forname(path + "." + db + "department"); return department.newinstance(); } catch (classnotfoundexception e) { e.printstacktrace(); } catch (instantiationexception e) { e.printstacktrace(); } catch (illegalaccessexception e) { e.printstacktrace(); } return null; } }
package designpattern.abstractfactory; public class client3 { public static void main(string[] args) { employee employee = reflectsimplefactory.createemployee(); employee.setname("张三"); employee.insert(employee); department department = reflectsimplefactory.createdepartment(); department.setname("技术部"); department.insert(department); } }
package designpattern.abstractfactory; import java.io.ioexception; import java.io.inputstream; import java.util.properties; public class reflectsimplefactory2 { static string path = "designpattern.abstractfactory";// 包路径 static employee createemployee() { try { class<employee> employee = (class<employee>) class.forname(path + "." + getdbname() + "employee"); return employee.newinstance(); } catch (classnotfoundexception e) { e.printstacktrace(); } catch (instantiationexception e) { e.printstacktrace(); } catch (illegalaccessexception e) { e.printstacktrace(); } return null; } static department createdepartment() { try { class<department> department = (class<department>) class.forname(path + "." + getdbname() + "department"); return department.newinstance(); } catch (classnotfoundexception e) { e.printstacktrace(); } catch (instantiationexception e) { e.printstacktrace(); } catch (illegalaccessexception e) { e.printstacktrace(); } return null; } private static string getdbname() { string dbname = null; try { inputstream in = reflectsimplefactory2.class.getresourceasstream("db.properties"); properties pro = new properties(); pro.load(in); in.close(); dbname = pro.getproperty("db"); } catch (ioexception e) { e.printstacktrace(); } return dbname; } }
db=mysql #db=oracle
package designpattern.abstractfactory; public class client4 { public static void main(string[] args) { employee employee = reflectsimplefactory2.createemployee(); employee.setname("张三"); employee.insert(employee); department department = reflectsimplefactory2.createdepartment(); department.setname("技术部"); department.insert(department); } }
如对本文有疑问, 点击进行留言回复!!
网友评论