UML: Может ли кто-нибудь объяснить мне схему Factory Method? - PullRequest
0 голосов
/ 18 июня 2009

Понятия не имею, что означает сломанная стрелка от ConcreteCreator к ConcreteProduct. Я искал в Интернете, и я придумал «Зависимость». Кто-нибудь может объяснить зависимость с точки зрения неспециалистов? спасибо!

alt text

изображение взято с http://www.dofactory.com/Patterns/PatternFactory.aspx

Ответы [ 4 ]

3 голосов
/ 18 июня 2009

Как вы правильно заметили, пунктирная линия указывает отношение зависимости между ConcreteCreator (как зависимым элементом или клиентом) и ConcreteProduct (как независимым элементом или поставщиком).

В этом конкретном случае строка указывает, что ConcreteCreator отвечает за создание экземпляра (ов) ConcreteProduct. Это можно было бы сделать более ясным, если подключить стереотип «создать» к зависимости.

2 голосов
/ 18 июня 2009

Пунктирная / пустая стрелка обозначает зависимость, означающую, что ConcreteCreator каким-то образом «использует» ConcreteProduct. Сама стрелка не определяет природу этой зависимости, только то, что зависимость существует и что ConcreteProduct на самом деле не является членом ConcreteCreator.

В предоставленном примечании (то есть "вернуть новый ConcreteProduct") подразумевается, что ConcreteCreator будет создавать (или создавать) объекты типа ConcreteProduct, что естественно для фабрики. Традиционно в UML вы можете прояснить это отношение, написав «<<creates>>» над пунктирной стрелкой. UML называет эти заметки «стереотипами».

См. Краткое руководство Аллена Холуба по UML для получения дополнительной информации. Вы можете видеть, что у него есть очень похожий пример, когда «Пользователи» создают «Ресурсы».

1 голос
/ 18 июня 2009

Я думаю, это означает, что ConcreteCreator должен знать, что такое ConcreteProduct для его создания, поэтому здесь есть явная зависимость. Фабричный метод создает Product, но переопределение ConcreteCreator этого метода должно возвращать ConcreteProduct.

0 голосов
/ 18 июня 2009

Это не просто фабричный метод - он больше похож на абстрактный фабричный паттерн. Определенный конкретный производный класс Creator создаст соответствующий экземпляр производного класса Product.

...