Чи є канонічна книга про дизайнерські зразки? [зачинено]


49

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

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


Я не впевнений, чи про це ти думаєш, але я знаходжу багато розумних розробок на Forrst .
Трей Піпмейер

2
Як щодо назви "Довідкові джерела для моделей дизайну" або "Ресурси шаблону дизайну" (оскільки я не маю на увазі "посилання" як просто "шукати на вимогу") і перемістити всі елементи списку в тіло (або видалити його )?


Для деяких пристойних реалізацій я колись дивився на дофактори (хоча книги не купував).
Стівен Еверс

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

Відповіді:


58

Шаблони дизайну: Елементи багаторазового об’єктно-орієнтованого програмного забезпечення дуже близькі до мого визначення канонічної книги про дизайнерські зразки. Відповідно до статті у Вікіпедії (моє наголос):

Оригінальною датою публікації книги була 21 жовтня 1994 року, авторське право 1995 року, а станом на липень 2010 року книга вийшла у світ 38-го друку . Книга вперше стала доступною для публіки на засіданні OOPSLA, яке відбулося в Портленді, штат Орегон, у жовтні 1994 р. Це дуже впливає на сферу програмної інженерії і вважається важливим джерелом для об'єктно-орієнтованої теорії та практики проектування. Більше 500 000 примірників продано англійською та 13 іншими мовами .

Ворд Каннінгем , піонер дизайну моделей, підтримує онлайн-каталог моделей книги на WikiWikiWeb . І відповідно до статті Вікіпедії про модель дизайну (знову ж таки, моє наголос):

Моделі дизайну набули популярності в інформатиці після того, як книга "Шаблони дизайну: елементи багаторазового використання об'єктно-орієнтованого програмного забезпечення" була опублікована в 1994 році так званою "Бандою чотирьох" (Gamma et al.).

У цій же статті є чимало інших книг, на які згадується відома в жанрі:

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

Я також проглянув «Шаблони дизайну Head First», і якщо ви прочитали будь-яку іншу книгу серії Head First, вона такої ж високої якості та приємна, як і більшість книг із серії :

Head First - це серія вступних навчальних книг до багатьох тем, опублікованих O'Reilly Media. Він підкреслює неортодоксальну, візуально інтенсивну читацьку комбінацію головоломок, жартів, нестандартного дизайну та верстки, а також захоплюючий, розмовний стиль, щоб занурити читача у певну тему.

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

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


2
+1. Насправді я хотів дати вам +5, але, на жаль, це не дозволено.
Діпан Мехта

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

@ Yannis цей і голова спочатку заснована на статичних мовах. Чи є хороші книги для динамічних мов, таких як python.
ravi404


27

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

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


23

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

У будь-який момент десь у світі хтось бореться з тими ж проблемами, які у вас є в дизайні програмного забезпечення. Ви знаєте, що не хочете винаходити колесо (або ще гірше, плоску шину), тому ви дивитесь на Шаблони дизайну - уроки, які отримують ті, хто стикався з тими ж проблемами. Завдяки дизайну шаблонів ви можете скористатися кращими практиками та досвідом інших, щоб ви могли витратити свій час на ... щось інше. Щось більш складне. Щось складніше. Щось веселіше.

Ви хочете дізнатися про важливі зразки - навіщо їх використовувати, коли ними користуватися, як ними користуватися (а коли НЕ використовувати). Але ви не просто хочете бачити, як виглядають візерунки в книзі, ви хочете знати, як вони виглядають "в дикій природі". У рідному середовищі. Іншими словами, у реальних додатках. Ви також хочете дізнатися, як використовуються візерунки в Java API, а також як використовувати вбудовану підтримку шаблонів Java у власному коді.

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

Найголовніше, що ви хочете вивчити "секретну мову" дизайнерських шаблонів, щоб ви могли триматися самостійно зі своїм колегою (і справляти враження на гостей коктейльної вечірки), коли він випадково згадує про його приголомшливо спритне використання команд, фасаду, проксі та інших Заводити між ковтками мартіні. Ви легко зрівняєтеся з глибоким розумінням того, чому Singleton не так простий, як це звучить, як Фабрика так часто неправильно розуміється, або з реальними стосунками між декоратором, фасадом та адаптером.

Завдяки шаблонам дизайну Head First , ви уникнете збентеження, думаючи, що декоратор - це щось із шоу "Торгові простори" ...


Це. Це дуже доступне прочитання і змінило спосіб повного підходу до інженерії програмного забезпечення.
GSto

2
вся головна перша серія чудова, особливо для стартових розробників.
Томас Сток

2
Я люблю книгу, але абсолютно ненавиджу обкладинку! Днями мій колега-непрограміст прогулявся по моєму кабінету, побачив книгу і сказав: "Головний модельєри дизайнера ? Ти йдеш у модний бізнес?"
Піт

1
@Pete Чому обкладинка може доставити вам більше проблем. Вона, мабуть, живе подвійним життям. fishbowl.pastiche.org/2005/08/12/…
Гордон

10

Так, є добре відома книга про шаблони дизайну: Шаблони дизайну: Елементи багаторазового об’єктно-орієнтованого програмного забезпечення, і їх автори часто називають "бандою чотирьох" (GoF) і на неї посилається майже у всіх текстах про дизайнерські шаблони.



Це не книга про дизайнерські зразки. Це каталог візерунків. На початку є короткий вступ до моделей дизайну, але я не вважаю, що це введення достатньо.
Йорг W Міттаг

@ JörgWMittag Існує не унікальний процес створення дизайнерських моделей, дизайнерські шаблони відносно невеликі рішення для багаторазового використання. Шаблони дизайну створюються завдяки нормальним процесам розробки програмного забезпечення, що відрізняє їх - їх величезна повторна зручність використання. Єдиний релевантний унікальний процес - визначення рішення як моделі дизайну, і каталоги це роблять тонко.
янніс

9

Шаблони проектування: елементи об'єктно-орієнтованого програмного забезпечення для багаторазового використання

alt текст

З Вікіпедії :

Шаблони дизайну: Елементи багаторазового використання об'єктно-орієнтованого програмного забезпечення - це книга інженерних програм, що описує повторювані рішення загальних проблем у розробці програмного забезпечення. Автори книги - Еріх Гамма, Річард Хелм, Ральф Джонсон та Джон Вліссайдс із передмовою Грейді Буха. Авторів часто називають бандою чотирьох, GoF або Go4. Книга розділена на дві частини, в перших двох главах вивчаються можливості та підводні аспекти об'єктно-орієнтованого програмування, а решта розділів описують 23 класичні моделі дизайну програмного забезпечення. Книга містить приклади в C ++ та Smalltalk.


3

Один з найкращих веб-сайтів з дизайнерським малюнком - Вікі Уорда, найперша вікі. Дивіться http://c2.com/cgi/wiki?HistoryOfPatterns, щоб отримати гарну стартову сторінку в ньому.

У 1987 р. Уорд і Кент провели консультації з групою напівпровідникових тест-систем Tektronix, у якої виникли проблеми із закінченням дизайну. Вони вирішили спробувати шаблони, які вивчали. Як і Олександр, який сказав, що окупанти будівлі повинні спроектувати його, Уорд і Кент дозволили представникам користувачів (тренеру та інженеру-польові) закінчити проект.

Уорд придумав п'ять мовних мов, які допомогли початківцям дизайнерам скористатися сильними сторонами Smalltalk та уникнути його слабких місць ...

Уорд і Кент були вражені витонченою елегантністю інтерфейсу, який розробляли їх користувачі. Вони повідомили про результати цього експерименту на OOPSLA 87 в Орландо. Вони написали позицію панелі та представили на семінарі Норма Керта на тему: Звідки беруться об'єкти? Вони розмовляли з малюнками, поки не стали синіми в обличчя, і отримали багато згоди, але без більш конкретних зразків ніхто не підписувався.

Тим часом Еріх Гамма був зайнятий написанням та розмірковуванням про об'єктно-орієнтований дизайн в ET ++ у рамках своєї кандидатської дисертації. Еріх зрозумів, що важливі повторювані дизайнерські структури чи структури. Питання справді полягало в тому, як ви їх захоплюєте та передаєте.

Брюс Андерсон виступив з доповіддю в TOOLS 90, на якій був присутній ЕріхГамма; Еріху сподобалася розмова. Брюс подав документ у EcoopOopsla90 (Оттава) і провів BOF під назвою " Назустріч посібнику архітектури", де він, Еріх Гамма, Річард Хелм та інші вступили в дискусії щодо зразків. Це був перший раз, коли Річард та Еріх зустрілися, і вони зрозуміли, що вони поділяють загальні думки щодо ключових ідей, що стоять перед написанням програмного забезпечення для багаторазового використання OO.

Напередодні ECOOP'91 Еріх Гамма та Річард Хелм, сидячи на даху в Цюріху в набряклий літній день, зібрали дуже скромні початки каталогу візерунків, які з часом стануть DesignPatterns ...

На семінарі OOPSLA, який проходив Брюс у 1991 році, справи справді котилися. Випадково Еріх Гамма, Річард Гельм, Ральф Джонсон та Джон Вліссайдс були всі там; пізніше вони стануть бандою чотирьох, яка є автором книги " Шаблони дизайну" ...


2

Я думаю, що перейменовування на візерунки може бути корисним просто тому, що воно описує, як певна конструкція / код може бути відновлена ​​до моделей у книзі GoF. Це може допомогти подолати початкову криву навчання. О, і це також розмірковує на "Шаблон щастя" :)

Ви також можете добре прочитати перші три томи архітектури програмно орієнтованої програми.


1

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

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

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

Цей веб-сайт також містить посібник з антивірусних моделей, UML та Refactoring.


Сайт SourceMaking на перший погляд виглядає спрощеним, але це справді чудова довідка. Крім моделей дизайну, деякі з моделей розробки, архітектури та управління проектами веселі. Реконструйовані рішення насправді можуть допомогти вам зберегти зустріч, яка йде з рейок. (Непогано для посилання на модель дизайну)
Що б

1

Оригінальна книга "Шаблони дизайну: елементи об'єкта, орієнтованого на багаторазове використання" є хорошим ресурсом для об'єктно-орієнтованих моделей дизайну.

Там існує багато інших книг. Коли мені потрібна швидка довідка, і моя книга GoF недоступна, у Вікіпедії зазвичай є достатньо інформації про ті та інші схеми дизайну.

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

Якщо ви хочете дізнатися про антишарові малюнки, про які слід пам’ятати, є дві книги: «AntiPatterns: Програмне забезпечення для рефакторингу, архітектури та проекти в умовах кризи», а також «Рефакторинг: вдосконалення дизайну існуючого коду», в якому є розділ про код пахне, інша назва антипатонів.


1

"Спритні принципи, зразки та практики в C #" Роберта К. Мартіна. Я думаю, що він також має версію книги на Java.

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

  * Ubiquitous Language
  * Code first approach (vs. DB first)
  * etc.

1

Якщо вас конкретно цікавлять моделі дизайну на C ++, спробуйте Modern C ++ Design від Андрея Олександреску.

Ця книга розповідає про те, як реалізувати часто використовувані шаблони, такі як Factory, Singleton та Visitor в C ++. Він також розповідає про дуже специфічні для C ++ теми, такі як смарт-покажчики, метапрограмування шаблонів та дизайн класів на основі політики.

Автор книги - авторитетний експерт , відомий своїм

піонерська робота над розробкою на основі політики, реалізованою за допомогою метапрограмування шаблонів. Ці ідеї сформульовані в його книзі Modern C ++ Design і вперше були втілені в його бібліотеці програмування Loki. Він також реалізував концепцію «переміщення конструкторів» у своїй бібліотеці MOJO. Він долучився до журналу користувачів C / C ++ у розділі "Загальне <Програмування>" ...


1
Ви б не хотіли пояснити докладніше, що це робить і для чого це добре? "Відповіді лише на посилання" не дуже вітаються на Stack Exchange
gnat

@gnat: як це?
Діма

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

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