我想要做的是实现一个点击流数据生成器,它可以很好地扩展。Java通用工厂模式实现
我在想:
的属性是类,例如每个用户都有某种浏览器。所以有一个浏览器类。相同的语言,插件等...
对于每个属性有一个工厂,创建一个属性的随机实例,例如新的浏览器(“Firefox”)或新的语言(“德语”)。可能的值存储在每个属性的文件中。
基本上所有这些工厂和财产类都在做同样的事情。现在,我为每个房产都有一个独立的工厂,每个新的房产都必须建立一个新工厂。
我的问题是,是否有可能对我拥有的所有房产和新房产实施某种通用工厂。
这是我的代码:
public abstract class Property {
protected String value;
Random rand;
public Property(String value) {
this.rand = new Random();
this.value = value;
}
@Override
public String toString() {
return this.value;
}
}
public class Browser extends Property{
public Browser(String value) {
super(value);
}
}
public abstract class AbstractFactory implements IFactory{
List<String> valuesList;
FileReader fileReader;
BufferedReader bufferedReader;
Random rand;
public AbstractFactory(String inputFile) {
rand = new Random();
this.valuesList = new LinkedList<String>();
String line = null;
try {
fileReader = new FileReader(inputFile);
bufferedReader = new BufferedReader(fileReader);
while ((line = bufferedReader.readLine()) != null) {
valuesList.add(line);
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import model.Browser;
public class BrowserFactory extends AbstractFactory{
public BrowserFactory(String inputFile) {
super(inputFile);
}
@Override
public Browser getInstance() {
return new Browser(valuesList.get(rand.nextInt(valuesList.size())));
}
}
你能证明你有试过吗? –
你想要什么肯定是可能的,但我需要一些更多的信息来弄清楚你需要什么。你确定像Builder这样的东西可能不适合你吗? –
我想要什么,顶部摆脱我拥有的所有工厂类(每个功能一个),都做同样的事情。 Thema之间的唯一区别是不同的输入路径和getinstance方法的不同输出类型。 – Joha