2012-07-02 80 views
1

我已閱讀Factory Method模式。設計後一個例子時遇到問題。工廠方法模式故障

該圖案的最佳設計?任何人都可以給我任何建議?

 AbstractProduct     Creator 
     / \      / \ 
    Product1 Product2    Creator1 Creator2 



     AbstractProduct       ? How to design Creator ? 
    / |   \ 
Product1 Product2 SubAbstractProduct 
        / \ 
        Product3 Product 4 

回答

1

造物主可以設計相同的方式,在前面的例子,因爲這創造產品3產品4混凝土創作者仍然是AbstractProduct

回答評論:

不是真的。當這個AbstractProduct createProduct()在子類Concrete Creator類(這是工廠模式)中被覆蓋時,它可以返回SubAbstractProduct

只是想補充一點,你可以在java 1.5以後的java中完成上述操作(即重載方法返回父類方法中返回的子類型)。

+0

感謝您的回答。但是如果Creator有一個方法:_AbstractProduct createProduct()_,那麼當我使用_product = createProduct()_時,產品只是AbstractProduct類型,而不是SubAbstractProduct,產品不能使用SubAbstractProduct中的任何擴展方法。 –

+0

好的,但是如果SubAbstractProduct有一個AbstractProduct沒有的方法,例如* moreMethod()*。雖然* product *只是AbstractProduct,所以如果它想使用* moreMethod()*,我必須輸入cast。 –