2012-07-02 3 views
1

Я прочитал шаблон метода Factory. У меня возникла проблема при проектировании последнего примера.Заводской метод Проблема с шаблоном

Лучший дизайн для картины? Кто-нибудь может дать мне какие-нибудь предложения?

 AbstractProduct     Creator 
     / \      / \ 
    Product1 Product2    Creator1 Creator2 



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

ответ

1

Creator могут быть разработаны таким же образом, как и в предыдущем примере, так как бетонные Творцы, которые создают Product3 и product4 все еще AbstractProduct.

Отвечая на комментарий:

Не совсем. Когда это AbstractProduct createProduct() переопределяется в дочерних классах Concrete Creator (который является заводским шаблоном), он может возвращать SubAbstractProduct.

Просто хотел добавить, что вы можете сделать выше (то есть переопределенный метод, возвращающий подтип того, что возвращается в методе родительского класса) в java с Java 1.5.

+0

Спасибо за ваш ответ. Но если у Создателя есть метод: _AbstractProduct createProduct() _, тогда, когда я использую _product = createProduct() _, так что продукт является просто абстрактным видом продукта, а не SubAbstractProduct, продукт не может использовать какой-либо расширенный метод из SubAbstractProduct. –

+0

ОК, но если SubAbstractProduct имеет метод, который AbstractProduct не имеет, * moreMethod() *, например. Хотя * продукт * является просто AbstractProduct, поэтому, если он хочет использовать * moreMethod() *, я должен набирать текст. –

Смежные вопросы