2010-07-01 79 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

這是一個非常好的方法來做到這一點。您正在使用工廠模式。

理想情況下,您可以在您的實現中使用序列化/反序列化來持久化該對象,但如果需要傳統格式,則這可能不是您的選擇。