2016-08-02 63 views
-1

我想創建Factory類,它返回基於String變量的Object。例如:Java驅動程序的設計工廠

public class BrowserFactory 
{ 
    public BrowserFactory(String browser) 
    { 
     switch (browser.toLowerCase()) 
     { 
      case "chrome": 
      { 
       new ChromeDriver(); 
       break; 
      } 
      case "firefox": 
      { 
       new FirefoxDriver(); 
       break; 
      } 
      case "explorer": 
      { 
       new InternetExplorerDriver(); 
       break; 
      } 
      case "edge": 
      { 
       new EdgeDriver(); 
       break; 
      } 
     } 
    } 
} 

我想用這種方式:

BrowserFactory sd = new BrowserFactory("chrome"); 

你能提出一些更好的方法來設計這個代碼?

+1

認爲你應該再讀阿布德工廠設計 – Jens

回答

2

你的工廠應該是這樣的:

public class BrowserFactory 
{ 
    private BrowserFactory(){ 
    } 
    public static RemoteWebDriver getDriver(String browser) 
    { 
     switch (browser.toLowerCase()) 
     { 
      case "chrome": 
      { 
       return new ChromeDriver(); 
      } 
      case "firefox": 
      { 
       return new FirefoxDriver(); 
      } 
      case "explorer": 
      { 
       return new InternetExplorerDriver(); 
      } 
      case "edge": 
      { 
       return new EdgeDriver(); 
      } 
      default: throw new IllegalArgumentException("Browser not supported") 

     } 
     return null; 
    } 

} 

而且你怎麼稱呼它:

RemoteDriver rd = BrowserFactory.getDriver("chrome");