`
yzyspy
  • 浏览: 81012 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

简单工厂模式

 
阅读更多

 

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("不存在这个子类");
          }
         
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics