Привет,
Планирането и подготвителната работа по книгата текат с пълна сила.
Появиха се няколко въпросителни около една част от книгата и решихме да се допитаме до общността, за да може съдържанието на книгата да е максимално актуално и да бъде със съответното качество, към което се стремим да постигнем.
Преди да зададем въпросите обаче, ето малко повече информация, за това как ще изглежда книгата. Решихме, че ще е добре книгата да бъде организирана в четири основни части. В момента организацията е следната, като предстои още един анализ на материала (най-вероятно след идните почивни дни), при който ще се изясни окончателната структура:
- Част 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. Допълнителни шаблони за дизайн
- Част 4. Приложения (Appendices)
В първата част се очаква да се въведат основни програмни концепции и инструменти, като ООП, базовите диаграми от UML-а, принципи на дизайна на софтуер (напр. Принцип на Лисков, IoC, изолиране на интерфейси (Interface Segregation Principle) и т.н.), които ще се ползват в книгата и които ще са базата, на която ще стъпи описанието на шаблоните.
Втората част на книгата ще съдържа "класическите" шаблони, т.е. тези дефинирани от GoF. Като структура, главите ще са много близки като структура до тези на GoF, като направихме малки подобрения.
В четвъртата част на книгата, ни се струва, че ще е добре да се сложи всичко, което не е удачно да бъде добавено в никоя от предните части, но по някакъв начин е свързано с основното съдържание (напр. Event Driven Development, AOP, SOA и т.н.). По подобие на първата, видът и на тази част, ще са окончателно ясни идните седмици.
Решихме, че освен класическите шаблони, ще е полезно да добавим и такива, които не са дефинирани от GoF, но се ползват доста често и са доста полезни. Те ще бъдат организирани в третата част на книгата. С тази глава са свързани и нашите въпроси.
За третата част избрахме около десет шаблона, но т.к. критерия за избор позволява доста вариации, решихме да се допитаме до вас и да съберем мнения, кои шаблони ви се струват, че биха могли да бъдат добавени към тази глава, за да имаме по-голям избор и накрая книгата да бъде по-пълна.
Тези, към които сме насочили са следните:
- Късно зареждане (Lazy Load) -> тук влиза и късната инициализация, като конкретно приложение на Lazy load-а
- Празен обект (Null Object)
- Обектен пул* (Object Pool) *
- Шаблон за делегиране (Delegation Pattern)
- Многослойна архитектура (Layered Architecture)
- Модел, презентация, контролer (MVC / Model View Controller)
- Преден контролер (Front Controller) *
- Помощник на презентацията (View Helper) *
- "Обект за пренос на данни" (Data Transfer Object) *, известен също като "Обект стойност" (Value Object)
- "Обект за достъп до данни" (Data Access Object) *, известен също като "Хранилище" (Repository)
- Спецификация (Specification) - с две думи - предикат, за който се създава клас. Подобрява изразителността на дизайна и прави бизнес правилата изрично изразени, т.е. предотвратява скриването на логиката в примитвните конструкции на езика (if clause).
* приемаме предложения за по-добро наименование
До края на тази седмица (4-ти декември включително) ще очакваме предложенията ви в тази тема и след това ще оформим окончателния вид на структурата на книгата.
Поздрави,
Цветан Василев
Николай Томитов
Николай Василев