Menu

Nakov.com logo

Thoughts on Software Engineering

Започна работа по книгата “Класически шаблони за дизайн”

Шаблони за софтуерен дизайн - книгаСледвайки утвърдената схема за писане на качествени технологични книги с отворен код от големи, но добре организирани авторски екипи (вж. проектите за безплатните книги Intro C#, Intro Java и .NET Framework), започна работата по нов проект: безплатна книга за шаблони за софтуерен дизайн (design patterns) на български език. Проектът има за цел да бъде написана оригинална българска книга за най-често използваните шаблони за софтуерен дизайн (GoF patterns), а след това да бъде продължена инициативата като се включат и архитектурни шаблони.

Екипът на проекта се ръководи от Николай Василев, Цветан Василев и Николай Томитов.

Търсят се автори и редактори!

За момента се работи върху първата част на книгата, която включва класическите GoF шаблони. Търсят се автори и редактори, които да се включат в проекта. Ако имате желание да се включите, моля присъединете се към дискусионната група на книгата и чрез нея се свържете с организационния комитет на проекта. Може да се свържете и директно с екипа на проекта: design.patterns.book.team [кльомба] gmail.com.

Съдържание на безплатната книга за шаблони за дизайн

Безплатната книга за спофтуерни шаблони за дизайн се състои от няколко части. Първите две части включват класическите GoF patterns (по Ерик Гама и бандата на четиримата) – шаблони за създаване на обекти, структурни шаблони и поведенчески шаблони. Тези шаблони са в обхвата на проекта за първия му етап. Книгата ще следва до някъде класическите концепции от GoF, но няма да е превод на тяхната книга, а ще дава съвременно виждане за шаблоните с имплементация на Java и примери от практическия опит на авторите.

За следващия етап на проекта са планирани архитектурни и други шаблони, които на практика също се ползват ежедневно при разработката на софтуер в различни библиотеки, платформи, технологии и frameworks.

Следва планираното съдържание на книгата по глави:

  • Предговор

Част 1. Софтуерен дизайн – общи положения

  • Глава 1. Основни етапи от разработката на софтуер
  • Глава 2. Обектно-ориентиран дизайн
  • Глава 3. Кратко въведение в UML
  • Глава 4. Основни принципи на дизайна на софтуер

Част 2. Класически шаблони за дизайн

  • Глава 5. Шаблони за дизайн – въведение

Шаблони за създаване на обекти (Creational Patterns)

  • Глава 6. Абстрактна фабрика (Abstract Factory)
  • Глава 7. Строител (Builder)
  • Глава 8. Метод фабрика (Factory Method)
  • Глава 9. Прототип (Prototype)
  • Глава 10. Сингълтон (Singleton)

Структурни шаблони (Structural Patterns)

  • Глава 11. Адаптер (Adapter)
  • Глава 12. Мост (Bridge)
  • Глава 13. Композиция (Composite)
  • Глава 14. Декоратор / обвивка (Decorator / Wrapper)
  • Глава 15. Фасада (Façade)
  • Глава 16. Миниобект (Flyweight)
  • Глава 17. Прокси (Proxy)

Поведенчески шаблони (Behavioral Patterns)

  • Глава 18. Верига от отговорности (Chain of Responsibility)
  • Глава 19. Команда (Command)
  • Глава 20. Интерпретатор (Interpreter)
  • Глава 21. Итератор (Iterator)
  • Глава 22. Посредник (Mediator)
  • Глава 23. Спомен/Мементо (Memento)
  • Глава 24. Наблюдател (Observer)
  • Глава 25. Състояние (State)
  • Глава 26. Стратегия (Strategy)
  • Глава 27. Шаблонен метод (Template Method)
  • Глава 28. Посетител (Visitor)

Част 3. Допълнителни шаблони за дизайн*

  • Глава 29. Многослойна архитектура (Multilayer Architecture)

Шаблони от слоя с бизнес логиката на модела (Domain Logic Layer Patterns)

  • Глава 30. Модел на домейна (Domain Model)
  • Глава 31. Слой от услуги (Service Layer)
  • Глава 32. Спецификация (Specification)

Инфраструктурни шаблони (Infrastructure Layer Patterns)

  • Глава 33. Късно зареждане (Lazy Load)
  • Глава 34. Обект-заявка (Object Query)
  • Глава 35. Хранилище (Repository)

Шаблони при разпределени системи (Distribution Patterns)

  • Глава 36. Отдалечена фасада (Remote Façade)
  • Глава 37. Обект за пренос на данни (Data Transfer Object)

Шаблони от презентационния слой (Presentation Layer Patterns)

  • Глава 38. Модел-презентация-контролер и неговите разновидности (MVC, MVP, MVVM)
  • Глава 39. Контролер за страница (Page Controller)
  • Глава 40. Входен контролер (Front Controller)
  • Глава 41. Презентация чрез шаблон (Template View)
  • Глава 42. Презентация чрез трансформиране (Transform View)

Базови шаблони (Base Patterns)

  • Глава 43. Съответствие (Mapper)
  • Глава 44. Регистър (Registry)
  • Глава 45. Обект-стойност (Value Object)
  • Глава 46. Специален случай (Special Case)
  • Глава 47. Множество от записи (Record Set)
  • Глава 48. Делегиране (Delegation)
  • Глава 49. Обектен пул (Object Pool)

Част 4. Приложения*

* в процес на изясняване

Сайт на проекта – безплатна книга за шаблони за софтуерен дизайн

Официалният сайт на безплатната книга за шаблони за софтуерен дизайн за момента е в Google Code: http://code.google.com/p/design-patterns-book/.

Публичната дискусионна група на проекта е: http://groups.google.com/group/design-patterns-book.

Всички активи по проекта са публично достъпни от неговото SVN хранилище: http://design-patterns-book.googlecode.com/svn/trunk/.

Проектът официално започва на 09.01.2012 г. така че не е късно да се включите.

Comments (7)

7 Responses to “Започна работа по книгата “Класически шаблони за дизайн””

  1. Anonymous says:

    Чудесно 🙂
    Чух, че са около 70 Design Pattern в момента вярно ли е?

  2. nakov says:

    Ами доста са, трудно е да се каже колко точно. Всеки може да измисли нови патърни и да им даде имена, но общо взето има няколко групи design patterns:
    – класически design patterns (GoF patterns): http://en.wikipedia.org/wiki/Software_design_pattern
    – архитектурни: http://martinfowler.com/eaaCatalog/
    – SOA patterns: http://www.soapatterns.org/masterlist_c.php
    – патърни за конкурентно програмиране: http://www.cs.wustl.edu/~schmidt/patterns-ace.html
    – патърни от специфична платформа (примерно в .NET има IDisposable pattern)
    Книжката ще започне с класическите патърни и ще продължи с най-важните архитектурни шаблони за дизайн на софтуерни системи.

  3. Ники says:

    Страхотна идея, а кога /приблизително/ ще е готова тази книга?

  4. Anonymous says:

    Kак върви работата по книгата?

  5. Привет Светлин!
    Прави ми впечатление следното нещо: има някой неща които са платформено независими т.е. са абстрактни и теоретични. В случая си мисля за алгоритмите, ООП и някой други по-теоретични неща. Тези неща са обясними с прости думи и евентуално псевдо код. ПСЕВДО!
    Какво имам в предвид:
    Преди време прочетох една книга – “Проектиране на база данни”. В тази книга автора бе обяснил нещата без изобщо да има някакъв код или дори наченка на нещо по-техническо. Други автори не следват този пример. Например в книгата “Програмиране=++Алгоритми” авторите са ползвали “С” (мисля беше) и други по технически изглеждащи и звучащи способи. В повечето книги авторите си ползват езикът с които са свикнали за да презентират знанията и способите.
    Въпросът ми е – Защо го правят? Защо и ти го правиш?
    Това е въпрос, не е упрек или критика!
    Това ли е възможно най-добрият и подходящ начин да се предават знанията? Има ли по-достъпна възможност това да стане?
    ПП
    Съжалявам ако съм досаден или ако изглеждам хейтър! Все някой трябва да задава и подобни въпроси и да подлага всичко на повторен анализ. Не се сърди;)

  6. Един въпрос който не е свързан с темата към Наков е: Въпреки това, че не се търси толкова много Ruby(Ruby On Rails) то няма да изчезне и е добро за секюрити системи, ползва се доста в някой страни. Защо 1 път в годината не се направи някакъв курс за Ruby?
    Поздрави!
    Аспарух Трандафоров

    • nakov says:

      Ако се намери преподавател, с радост ще направим курс по Ruby и Rails. Сериозна технология е и се търси. Не колкото Java и PHP, но се търси. Рано или късно ще намерим кой да го преподава. Имайте търпение.

RSS feed for comments on this post. TrackBack URL

Leave a Reply to Ники