public interface DB {
public void Connect();
public void Close();
}
package Factory02;
import Factory01.DB;
//利用Java反射机制 避免增加子类 避免了修改工厂
class MySQL implements DB
{
public void Close() {
System.out.println("MySQL close.......");
}
public void Connect() {
System.out.println("MySQL connect.......");
}
}
class MSSQLServer implements DB
{
public void Close() {
System.out.println("MMSSQLServer close.......");
}
public void Connect() {
System.out.println("MSSQLServer connect.......");
}
}
class Oracle implements DB
{
public void Close() {
System.out.println("Oracle close.......");
}
public void Connect() {
System.out.println("Oracle connect.......");
}
}
//***************************************************
class DBfactory
{
public static DB getDBInstance(String type)
{
DB db= null;
try {
db=(DB) Class.forName("Factory02."+type).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return db;
}
}
//************************************************
public class factory2 {
public static void main(String[] args) {
DB db=DBfactory.getDBInstance("MSSQLServer");
if(db!=null)
{
db.Connect();
db.Close();
}
else
{
System.out.println("不存在这个子类");
}
}
}