Коли використовувати який шаблон дизайну? [зачинено]


104

Мені дуже подобаються шаблони дизайну, але мені важко бачити, коли я можу застосувати його. Я прочитав багато веб-сайтів, де пояснюються шаблони дизайну. Я розумію більшість із них, але мені важко розпізнати модель у власних ситуаціях.

Отже, тому я задаю це питання. Чи є якісь вказівки / дзвіночки тривоги, коли використовувати який дизайн.

Наприклад, якщо ви робите оператор перемикання, щоб визначити, який об’єкт потрібно створити, ймовірно, ви хочете використовувати заводський шаблон дизайну. Отже, заява перемикача в цьому випадку - це «дзвінок тривоги» для використання фабричного зразка.

Отже, чи знаєте ви більше «дзвіночки тривоги» для визначення структури дизайну?


6
Зазвичай описи візерунків, які я бачу, містять опис ситуацій, коли ви хочете до цього шаблону дизайну.
Р. Мартіньо Фернандес

Відповіді:


99

Зазвичай процес відбувається навпаки. Не варто шукати ситуації, коли використовувати шаблони дизайну, шукайте код, який можна оптимізувати. Коли у вас є код, який, на вашу думку, неправильно структурований. спробуйте знайти шаблон дизайну, який вирішить проблему.

Шаблони дизайну покликані допомогти вам вирішити структурні проблеми, не розробляйте додаток лише для того, щоб мати можливість використовувати дизайнерські шаблони.


23
Не лише структурні проблеми, а й поведінкові та творчі проблеми.
DevDemon

1
Шаблони проектування можуть пришвидшити процес розробки, надавши перевірені, перевірені парадигми розвитку. Ефективне проектування програмного забезпечення вимагає розгляду питань, які можуть не стати видимими до подальшого впровадження. Використання шаблонів дизайну допомагає запобігти тонким проблемам, які можуть спричинити серйозні проблеми та покращити читабельність коду для кодерів та архітекторів, знайомих із шаблонами.
SaddamBinSyed

5

Вивчіть їх і повільно ви зможете зрозуміти і зрозуміти, коли ними користуватися. Почніть з чогось простого, як одинарний візерунок :)

якщо ви хочете створити один екземпляр об'єкта і лише ОДИН. Ви використовуєте однотонний візерунок. Скажімо, ви створюєте програму з об'єктом параметрів. Ви не хочете декількох з них, це було б нерозумно. Сінглтон гарантує, що ніколи їх не буде більше. Однотонний візерунок простий, багато використовується і справді ефективний.


17
Синглтон насправді не для того, коли вам потрібен лише один екземпляр. Singleton - це коли вам потрібно обмежитися одним екземпляром. Коли вам потрібен лише один екземпляр, ви можете спробувати просто створити лише один екземпляр і використовувати його.
Р. Мартіньо Фернандес

Крім того, хоча одиночний в деяких місцях дуже корисний і необхідний, це також дуже легкий зразок, який потрібно реалізувати, коли це не потрібно. Як ви натякаєте тут, і, як зазначав Фернандес, вам це, мабуть, не потрібно. Власне кажучи, використання однотонної картини є доброю ознакою можливих (ймовірно) запахів коду. Використання його для класу обслуговування - це більш ніж ймовірно запах коду. Звучить так, що вам потрібен DI, а не одиночний. Деякі люди їх використовують таким чином. Особливо для невеликого (неважливого) коду або POC. Але, як я вже сказав, є деякі ефективні способи використання. Не знайдіть простий спосіб зробити щось, а просто зробіть це.
Suamere

4

Я повністю згоден з @Peter Rasmussen.

Шаблони дизайну забезпечують загальне вирішення часто зустрічається проблеми дизайну.

Я хотів би, щоб ви дотримувалися підходу нижче.

  1. Зрозумійте наміри кожного зразків
  2. Зрозумійте контрольний список або використовуйте регістр кожного шаблону
  3. Подумайте про вирішення своєї проблеми та перевірте, чи потрапляє ваше рішення у контрольний список певного зразка
  4. Якщо ні, просто ігноруйте шаблони дизайну та напишіть власне рішення.

Корисні посилання:

створення джерел : красиво пояснює наміри , структуру та контрольний список на кількох мовах, включаючи C ++ та Java

Вікіпедія : Пояснює структуру, діаграму UML та робочі приклади на кількох мовах, включаючи C # та Java.

Контрольний список і Емпіричні правила в кожному sourcemakding дизайн-шаблон забезпечує Alram дзвінви шукаєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.