我想要做的是實現一個點擊流數據生成器,它可以很好地擴展。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