Навчання / впровадження шаблонів дизайну (для початківців) [закрито]


85

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

Я бачу багато питань щодо SO, що обертаються навколо використання шаблонів дизайну, і мені цікаво, чи є у когось хороші ресурси для вивчення та впровадження шаблонів дизайну? Я розумію загальну ідею і знаю, як / коли використовувати пару з них (одиночні, фабричні методи), але я знаю, що втрачаю.

(Про всяк випадок це має значення, моєю перевагою є C #, але я міг би навчитися на прикладах іншими мовами)

Відповіді:


84

Очоліть перші шаблони дизайну

текст заміщення

і сторінка « Візерунок дизайну» - найкращі ресурси для початківців. FluffyCat - ще один хороший безкоштовний Інтернет-ресурс для дизайну шаблонів як на Java, так і на PHP .

Книга « Банда чотирьох» - це те, куди піти пізніше, але вона досить просунута, тому я зачекаю, поки ви досить чітко зрозумієте інші ресурси.


4
Є приклади коду C # для шаблонів дизайну Head First, доступні за адресою msquaredweb.com/DesignPatterns/…
інструментарій

5
Я подивився цю книгу ... ненавидів її. Тож я взяв книгу GoF і з цього дізнався все про шаблони дизайну. Це було якось сухо, але набагато інформативніше.
Томас Оуенс,

1
Спочатку я думав, що головна перша книга буде абсолютно нудотною (вона важка для метафори, а також має дуже розмовний відтінок) .. але насправді вона справді винахідлива та інформативна; Я дуже радий, що ризикнув і купив його. Імо, обираючи банду з чотирьох = непотрібний мазохізм.
codeinthehole

2
Я виявив, що перша книга абсолютно нудотна. Він витрачає стільки часу на "розвагу", я думаю, що він погано передає ключові ідеї - вони губляться. Читати це все одно, що спостерігати, як тато когось намагається бути крутим. Але книга GoF - це інша крайність, і тому не для всіх.
Draemon

2
@Bill: Я знаю, але я погоджуюсь з коментарями @Thomas та @Draemon. Мої друзі, не орієнтовані на програмування, яким рекомендували цю серію книг для алгоритмів класів програмування, ненавиділи їх і потрапляли в "сухіші" книги, оскільки кількість інформації на сторінці була більшою. Це лише питання переваг. Я читаю технічні книги з юних років і ходив до середньої технічної школи, яка, мабуть, змусила мене читати "сухі" книги. Я віддаю перевагу книгам, у яких домашні тварини не говорять зі мною та не відволікаються, а досить просту інформацію для засвоєння.
Естебан Кюбер

27

Шаблони дизайну чудові з різних причин:

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

Але коли ваша мета полягає лише у вивченні зразків дизайну, я думаю, ви втрачаєте основи. Усі шаблони дизайну базуються на більш загальних принципах. Висока згуртованість, низькозв’язаний відкритий закритий принцип, СУХА, Принцип заміщення Ліскова тощо. Для цих основ я б прочитав наступні книги в такому порядку:

  1. Перший об’єктно-орієнтований аналіз та дизайн (головний перший) [ІЛЮСТРОВАНО] (М’яка обкладинка)
  2. Застосування UML та шаблонів (тверда обкладинка)
  3. Agile Principles, Patterns and Practices in C # (Robert C. Martin Series) (Тверда обкладинка)

Після цього ви готові до основної групи з чотирьох шаблонів дизайну

  1. Шаблони дизайну Head First (Head First) [ІЛЮСТРОВАНО] (М'яка обкладинка)
  2. Біблія
  3. Гарний веб-сайт (нічого не купуйте, це не варто) http://dofactory.com/Patterns/Patterns.aspx (деякі реалізації цього сайту варті обговорення

Наступний крок:

  1. Шаблони архітектури корпоративних додатків (Серія підписів Аддісона-Веслі) (Тверда обкладинка)
  2. Книги POSA

І завжди пам’ятайте: шаблон не є метою!


2
Я думаю, що основ ОО (інкапсуляція, успадкування, поліморфізм тощо) достатньо, щоб знання розпочали вивчати шаблони проектування. Ви можете вивчити інші принципи (висока згуртованість, низькозв’язаний відкритий закритий принцип, СУХА, Принцип заміщення Ліскова тощо) за допомогою навчальних моделей.
Білл Ящірка

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


14

Моя порада:

Читайте багато про закономірності з різних джерел.

Намагаючись застосувати якомога більше шаблонів до всього коду, який ви пишете, оскільки цей момент не дасть хороших результатів. Натомість нехай інформація деякий час лежить у вашому мозку (читайте: місяці).

Раптом ви виявите, що натрапляєте на проблему чи фрагмент коду, і неясно пам’ятаєте, що бачили щось, що могло б допомогти вирішенню цієї конкретної проблеми. Зараз саме час переглянути деталі на шаблоні, про який ви думаєте, і спробувати застосувати його.

Це те, що в мене все одно спрацювало.


9

Шаблони дизайну

Цей підручник містить наступні підрозділи

  • Намір кожного зразка дизайну
  • Структура реального світу для шаблону дизайну
  • Постановка проблеми
  • Детальне обговорення проблеми
  • Контрольний список щодо того, як скласти шаблон
  • Емпіричні правила під час приходу до шаблону.
  • Фрагменти коду для шаблону дизайну, що включає C #, C ++, Delphi, Java та PHP

Цей сайт також містить керівництво по анти Patterns , UML і рефакторінга .


Я знайшов веб-сайт дуже корисним. Хороші, наочні приклади.
Август




4

Я б порекомендував поглянути на квінтологію Жана Поля Будху (?) Щодо демістифікації шаблонів дизайну на DNRtv, URL-адреси подані нижче. Відеопередачі стосуються, зокрема, Сінглтона, Фабрики абстракцій - різниця полягає в тому, що ви можете дивитися, як він кодує, коли він обговорює теорію. Добре стежити за обідом у дощовий будень.

http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum= 68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92


DnrTV не працює! Це така ганьба, бо кінофільми Будху є інформативними. Ви бачили відео, розміщені де-небудь ще? У вас є відеофайли, я б із задоволенням зберігав їх у мережі.
Stephan Luis

4

Анотація до вищезазначених коментарів.

Короткий довідник про шаблони GOF

Ось гарне місце, де ви можете запустити dofactory.com/patterns/patterns.aspx - Ви можете знайти посилання на кожен шаблон разом із відповідними реалізаціями.

Однак пам’ятайте, що це шаблони GOF. Можливо, вам доведеться прочитати та зрозуміти вдосконалені шаблони, як тільки ви отримаєте достатній досвід у OOAD. Head First Design Patterns - це хороший початок, і, досягнувши певного прогресу, скористайтеся шаблонами архітектури корпоративних програм Мартіна Фаулера.

Застосування шаблонів дизайну - процес мислення

Інший головний аспект - Застосування шаблонів дизайну настільки ж важливе, як просто їх знання. Читання цих статей також може вам допомогти.

Застосування шаблонів дизайну Частина I

Застосування шаблонів дизайну Частина II

Сподіваюся, це допомагає


3

Шаблони дизайну Head First є хорошим, як і інші, про які вже зазначалося. Окрім цього, звичайно оригінальна книга та шаблони дизайну C #. Також є вже згадані хороші веб-сайти.

Окрім самостійного навчання, я серйозно рекомендую створити або відвідати групу з вивчення зразків у вашій місцевості. Для пояснення та чудового замовлення на вивчення закономірностей див . Посібник із вивчення дизайну шаблонів . Ми зробили це, і я можу чесно сказати, що я б не зрозумів так багато, як зараз. Щотижнева зустріч з іншими зацікавленими людьми змушує вас дивувати дисциплінованістю, коли вивчаєте щось абстрактне, наприклад, шаблони дизайну.

Щасливих навчань!


3

Перш ніж витрачати гроші на книги, я би порадив чудову сторінку шаблонів дизайну Вікіпедії . Також для чогось іншого, що стосується Google, для "скриншотів дизайну шаблонів" або пошуку "шаблонів дизайну" на YouTube . Отримання тієї самої інформації, що подається по-різному, часто допомагає знизитися.

Книга " Банда чотирьох" - це остаточний текст про найвідоміші зразки, але не такий легкий для читання, а на прикладах С ++ не всім улюблений.

Текст Head First Pattern Design є набагато доступнішим, але містить лише підмножину шаблонів "Банда чотирьох".

Найголовніше - зрозуміти, де і чому певний шаблон корисний. Потім шукайте в Інтернеті приклади реалізації вибраною мовою та експериментуйте, поки не отримаєте. Зрозумійте один шаблон, перш ніж переходити до наступного. Кожен розуміє деякі закономірності краще за інших (а є сотні менш відомих).

Просто продовжуйте підключати.



2

Шаблони архітектури корпоративних додатків (тверда обкладинка) Мартіна Фаулера

Рефакторинг на візерунки (тверда обкладинка) Джошуа Керієвський

Постійна інтеграція: Поліпшення якості програмного забезпечення та зменшення ризику (М'яка обкладинка), автор Paul Duval et.al.

Поза архітектурою програмного забезпечення: Створення та підтримка переможних рішень (М'яка обкладинка) Люка Хоманна


2

Шаблони дизайну схожі на будь-яку функцію бібліотеки, прочитайте про них, тоді, коли виникне проблема, шаблон дизайну буде у вашому "Toolchest". Існує багато книг про шаблони дизайну, всі вони створені за зразком оригінальних шаблонів дизайну "Банда чотирьох".

Для будь-яких програмістів, я думаю, що і книга про рефакторинг Фаулера є абсолютно мінімальними вимогами.


Книги POSA не були "зразками за GOF" - GOF, як видається, вийшли першими - вони випускалися одночасно.
Тім

1
Щоб уникнути плутанини, я хочу сказати, що БОЛЬШІСТЬ шаблонів дизайну НЕ реалізуються в бібліотеці. Багато шаблонів формуються шляхом поєднання бібліотечних класів разом.
Білл Ящірка

Я зробив так, щоб це звучало так, ніби їх можна робити в бібліотеці - вибачте за це, дякую за роз'яснення, Білл. Шаблони проектування, як правило, подібні до бібліотек, але речі, які ти зазвичай не можеш ВСТАВИТИ в бібліотеку - як різні способи взаємодії невідомих один з одним класів.
Білл К


2

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

Це відмінна книга на кожному рівні: макет, чіткість, розуміння, глибина. Це одна з тих чудових книг, яку ви спочатку читаєте від обкладинки до обкладинки, а потім використовуєте як довідкову інформацію, поки буквально не знаєте її зсередини.

Ви можете почати зі сторінки Вікіпедії , але побалуйте себе також чудовою книгою.


2

Застосування UML та шаблонів Крейгом Ларменом. Почніть з основного аналізу, проектування та використовуйте простий сценарій випадку. Більшість основних зразків представляє простим способом.


2

Якщо ви прочитаєте про шаблони дизайну, ви помітите, що на Java, здається, є декілька з них.

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

Шаблони дизайну не для лінивих кодерів.


2

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


1

Я також пропоную провести шахрайство з Refactoring to Patterns, коли ви прочитаєте Head First Design Patterns.

Примітка: Приклади коду на Java, але вони повинні бути дуже схожими на приклади C # ...


1

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

Вони корисні в контексті проблеми - як концепція для нового / початківця розробника, вони насправді не надто практичні цінності, окрім форми, знаючи, що ви повинні ними користуватися, коли і де можете.

РЕДАКТУВАТИ Для уточнення - багато шаблонів дизайну є результатом проблем, виявлених у деяких доменах. Навряд чи можна очікувати, що новий програміст (ІМО) знатиме шаблон (и) проектування, який використовуватиметься для певного набору проблем. Подібно до того, як ми отримуємо невелику кількість алгоритмів у дослідженнях CS, нам потрібно розуміти, що ми можемо зробити із шаблонами та їх переваги, але коли людина все ще будує світ привіт або відкриває stl, практичних шаблонів дизайну не надто багато. Візерунки чудові. Але вони не є срібною кулею.

(Ні CASE (інструменти), ні UML, ні SCRUM, ні TDD, ні STL, ні Java, ні XML тощо). Це все лише аспекти нашої професії, і розглядати ці теми як другу прихід наївний.


Але якщо ви не знаєте про закономірності, ви не дізнаєтесь, чи є там такий, який вирішує вашу конкретну проблему. Так, як новачкові ви навряд чи ПОТРІБНІ зразок, але важливо вивчити шаблони до того, як виникне така потреба.
Елі

Думаю, я це висвітлив у своєму дописі ...
Тім,

Вам потрібно мати більше, ніж просто знати, що вони існують .... ви повинні знати, як вони працюють, і ті ситуації, коли їх використовують. Це трохи більше, ніж поверхневі знання. Можуть пройти роки, перш ніж використовувати шаблон, але коли ви це зробите, не час вивчати шаблон.
Елі,

Отже, ви говорите, що новачок повинен вивчити і зрозуміти десятки чи більше зразків? Що тим часом відривається від столу? Я не сперечаюся проти шаблонів. І я також не думаю, що вивчати особливості шаблону JIT - це погано. Навчання моделям перед іншими речами ІМО не є корисним
Тім,

1

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

Після того, як ви закодуєте навіть крихітний шматочок, ви помітите, що пишете щось подібне до того, що кодували раніше. Це закономірність. Навіть якщо це крихітний візерунок, це варто зауважити. Чи є кращий зразок? Ви бачите, як певні крихітні моделі взаємодіють для вирішення більшої проблеми? Ну наступного разу, коли ви захочете вирішити більшу проблему, весь шаблон приходить вам на думку як один шматок. Розробка детальних рядків коду стає механічною.

Чим більше ви помічаєте шаблонів, тим легшим стає програмування, і тим більше ви оціните деякі найбільші та найкращі шаблони, розроблені іншими програмістами. Спробуйте освоїти шаблон MVC. Так чи інакше, варіації з’являються повсюдно, навіть у крихітних дизайнерських рішеннях.


1

Як тільки ви зрозумієте концепцію, перегляньте вихідний код або дизайн Eclipse, безліч дійсно хороших прикладів цих шаблонів (не дивно, що Гамма була одним із дизайнерів).


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