在webapp中,我有一个数据模型(我们称之为item)。本项数据采用两种方式填写。第一种方法是xml解析器(数据导入),第二种方法从数据库读取数据(同时解析网站)。
我看到了实现这个类的两种可能的方法:
第一种方式:
public class Item() {
public void parseFromXML(String xml) {
//xml parse code
}
public void loadFromDB() {
//load from Database
}
}
因此,我可以使用以下内容创建新项目:
Item myItem = new Item();
myItem.parseFromXML(xml);
或者
Item myItem = new Item();
myItem.loadFromXML();
第二种方式:
public class Item() {
public static Item getItemFromXML(String xml) {
Item i = new Item();
//xml parse code
return i;
}
public static Item getItemFromDB() {
Item i = new Item();
//Database load code
return i;
}
}
通过这种方式,我可以示例化如下项:
Item myItem = Item.getItemFromXML();
或者
Item myItem = Item.getItemFromDB();
我的问题是:哪种方法更好,为什么?我个人更喜欢2。这样,因为使用这个类的程序员(此时只有我)永远不会得到一个void item对象(我能在构造函数中抛出一个'false示例化方法'-异常吗?)。
(对不起,我的英语不是最好的,希望你能理解)
1条答案
按热度按时间5jvtdoz21#
使用itemfactory不是更好吗:
或者数据库:
优点是您(或其他人)可以轻松地提供新的itemfactory实现,例如使用java序列化或将项存储在oodb中,或使用webservice远程加载它。最好将对象的创建/加载从不同的位置分离到不同的类中。
我不希望在我的域对象模型中有数据库依赖项。