2016-08-02 115 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");