Неправильные шаблоны дизайна - PullRequest
19 голосов
/ 31 октября 2008

Есть ли в каноническом списке «Банды четырех» какие-либо шаблоны проектирования, которые вы часто обнаруживаете неправильно, неправильно или слишком часто (помимо обсуждаемого синглтона)? Другими словами, есть ли шаблон дизайна, который вы бы посоветовали дважды подумать перед использованием? (А почему?)

Ответы [ 15 ]

1 голос
/ 31 октября 2008

Шаблон наблюдателя довольно бесполезен в C #, потому что у него есть события.

0 голосов
/ 04 августа 2016

Вы не можете иметь прямой ответ на этот вопрос. Это в основном субъективно и зависит от требований приложения.

  1. Большинство людей указали, что Singleton_pattern это плохо, но не плохо для каждого пользователя и проекта. Для моего проекта требование, это служит цели. Мне нужен один ConnectionManager для управления сессиями между клиентом и приложением, и Singleton отлично справляется со своей задачей.

  2. Вы дали стороннюю банку с хорошей документацией. Баночка содержит иерархию наследования. Теперь вам нужно добавить операцию для каждого ребенка. Поскольку у вас нет исходного кода, вы не можете это сделать. Теперь вы можете воспользоваться Visitor_pattern . Но если у вас есть исходный код, вы можете вообще не использовать шаблон Visitor. Вы можете просто добавить новую операцию в родительском и каждом дочернем. Отсутствие исходного кода не означает, что я неправильно использую шаблон Visitor.

  3. Я хочу ограничить связь между различными объектами. Я продолжу реализацию Mediator_pattern для связи с объектами. Я хочу ограничить доступ клиента к моей системе, чтобы скрыть сложность. Я продолжу с Facade_pattern . Это не значит, что я неправильно использую эти шаблоны. Этот же пример можно распространить на другие шаблоны, такие как Proxy_pattern и т. Д.

0 голосов
/ 22 марта 2012

МОДЕЛЬ ХРАНИЛИЩА

Большинство людей начинают использовать этот шаблон сразу после прочтения книги Эрика Эванса «Дизайн, управляемый доменом».

Сколько людей здесь видели репозитории, сконструированные как объекты доступа к данным?

0 голосов
/ 22 марта 2012

Используйте шаблон только тогда, когда это необходимо. Вы не можете предсказать будущее, поэтому, хотя вы можете вставить шаблон, чтобы сделать дизайн более гибким, что произойдет, когда продукт приобретет другое направление, и ваш шаблон станет тем самым, что мешает вам реализовать то, что хотят ваши пользователи? *

Сохраняйте дизайн как можно более простым для начала. Когда вы узнаете больше о том, как должен измениться ваш дизайн, используйте соответствующий шаблон, а не раньше.

0 голосов
/ 25 сентября 2009

Во-первых, «это зависит» от языка - некоторые структуры в некоторых языках уменьшают потребность в определенных шаблонах проектирования.

Во-вторых, часть шаблона для концепции Design Pattern с самого начала включала разделы «Применимость» и «Последствия» - игнорируйте их на свой страх и риск. «Знание» паттерна означает не только то, что вы знаете, как его кодировать на выбранном вами языке, но и знание того, когда его использовать и какие недостатки могут возникнуть при его использовании.

...