2016-08-02 10 views
-1

Ich möchte Factory-Klasse erstellen, die Object basierend auf String-Variable zurückgibt. Zum Beispiel:Design Factory für Java-Treiber

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; 
      } 
     } 
    } 
} 

Ich mag es auf diese Weise nutzen:

BrowserFactory sd = new BrowserFactory("chrome"); 

Können Sie etwas besseren Weg vorschlagen, diesen Code zu entwerfen?

+1

Denken sollten Sie aboud Fabrikplanung wieder lesen – Jens

Antwort

2

Ihre Fabrik sollte wie folgt aussieht:

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; 
    } 

} 

Und Sie es nennen:

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