2010-07-01 60 views
2

我正在创建一个软件项目,其中大多数业务对象都存储在文件中(以传统格式)。这些对象只能从输入流实例化。从文件创建对象的设计模式?

我今天这个做使构造私人和静态函数实例如下:

public class BusinessObject { 

    private BusinessObject() {} 

    public static BusinessObject fromStream(Stream stream) { 
     // Do initialization here 
    } 
} 

我想我的代码以使用既定的设计模式,因为其他人会修改它。

这是一个已知的模式,还是有一种设计模式,我可以使用,而不是上述?

感谢,

马丁

回答

0

看起来你正在做一个Factory建设模式之一。

它可能取决于你在“初始化”阶段做了什么,但是你可能只需要构造一个接受Stream的构造函数。如果您已经禁止了null构造函数,并且只允许它们从Stream创建,那么它看起来就像更简单一样。我可以看到这不起作用的唯一原因是如果有多个BusinessObject的子类。

+3

你的第一行听起来像是Clippy会说的。 – BenV 2010-07-01 23:53:13

0

听起来你正在寻找要么反序列化或类似工厂

0

这是一个非常好的方法来做到这一点。您正在使用工厂模式。

理想情况下,您可以在您的实现中使用序列化/反序列化来持久化该对象,但如果需要传统格式,则这可能不是您的选择。