gpt4 book ai didi

java - 我如何应用 "Factory Pattern"在 Java 中实例化 Firefox、IE 和 Chrome 浏览器实例

转载 作者:行者123 更新时间:2023-12-02 07:34:17 25 4
gpt4 key购买 nike

这就是我所拥有的:

Browser.java
BrowserFactory.java

ChromiumBrowser.java
InternetExlorer.java
FirefoxBrowser.java
HTMLUnitBrowser.java

SeleniumDriver.java

我的想法是 SeleniumDriver.java 是 BrowserFactory 的客户端,并将根据通过 csv 文件选择的浏览器实例创建浏览器实例:

  1. Chromium浏览器
  2. 互联网探索者
  3. 火狐浏览器
  4. HTMLUnitBrowser

最佳答案

您有很多方法来实现工厂。这取决于创建的复杂程度以及实体列表的固定程度。

枚举方式:

public enum BrowserType {
CHROME {
public Browser create() {
return new ChromeBrowser();
}
},
IE {
public Browser create() {
return new IeBrowser();
}
}
public abstract Browser create();
}

// Factory is optional really, the enum does the job.
public class BrowserFactor {

public Browser create(BrowserType type) {
return type.create();
}
}

map /策略方式:

interface BrowserStrategy {
Browser create();
}

public class ChromeBrowser implements BrowserStrategy {
public Browser create() {
return new ChromeBrowser();
}
}

public class BrowserFactor {
Map<String, BrowserStrategy> ctorStategy = ...; // I'd use DI, but this could be manually created.
public Browser create(String type) {
return type.create();
}
}

map /反射方式:

public class BrowserFactor {
Map<String, Class<? extends Browser> clazz = ...; // I'd use DI, but this could be manually created.
public Browser create(String type) {
return clazz.newInstance();
}
}

我的偏好是看看您的 DI 框架是否可以为您处理。如果没有:

  • 简单创建/固定实体集 - 枚举或映射/反射
  • 简单创建/期望实体集将分组 - 映射/反射
  • 复杂的创作 - map /策略。

关于java - 我如何应用 "Factory Pattern"在 Java 中实例化 Firefox、IE 和 Chrome 浏览器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com