|
Тема |
За Дизаин Патернс (Design Patterns) |
|
Автор |
Пaньo Дoнeв (пират) |
|
Публикувано | 15.08.08 00:05 |
|
|
Направи ми впечатление, че някой в един от коментарите на темата за отворения програмист постави въпроса за полезността на Дизаин Патернс (Design Patterns), но се е изразил много накратко, затова сметнах за необходимо да хвърля светлина на тази уви неизвестна за мнозина тема.
Дизаин патренс наистина са невероятно полезни. Нещо повече те са необходимо условие за правенето на всеки ентерпрайс софтуер. Чуете ли Ентерпраис - мислете си за Дизаин Патренс. Тези неща са като дупе и гащи. Аз например ако реша да пиша софтуер без дизаин патернс просто не тръгвам.
Софтуер без дизаин патернс за мен не е никакъв софтуер. Аз плюя на такъв софтуер. Но виж ако има дизаин патернс, такъв софтуер се пише с лекота и върви без грешки. Какво с лекота, такъв софтуер се пише сам и няма нужда да се тества. Освен разбира се с Ентерпраис тестов процес, който ползва специални Тестови Дизаин Патернс.
Когато някой ми каже, че е написал такъв и такъв софтуер, аз веднага го питам, а какви дизаин патерни ползва? Ако е ползвал, аз веднага го признавам за голям програмист и го прегръщам като роден брат.
Когато аз самият пиша софтуер аз ползвам само дезаин паттренс. Ето например как аз пиша софтуер и как всеки истински ентерпраиз програмист трябва да пише софтуер:
1.
Създавам IFactory клас за създаване на моя Object.
2.
Създавам IAbstractFactory за да абстрактна Factory.
3.
Създавам IAbstractFactoryBuilder за да построя AbstractFactory.
4.
Създавам IAbstractFactoryBuilderManager за да менажрам моя AbstractFactoryBuilder.
5.
Създавам IAbstractFactoryBuilderManagerService за да контролирам цикъла на живот на моя AbstractFactoryBuilderManager.
6.
Създавам IPluggableAbstractFactoryBuilderManagerService за да добава към AbstractFactoryBuilderManagerService plugin функционалност.
7.
Създавам ObjectImpl.
8.
Създавам FactoryImpl.
9.
Създавам AbstractFactoryImpl.
10.
Създавам AbstractFactoryBuilderImpl.
11.
Създавам AbstractFactoryBuilderManagerImpl.
12.
Създавам AbstractFactoryBuilderManagerServiceImpl.
13.
Създавам PluggableAbstractFactoryBuilderManagerServiceImpl.
14.
Свързвам тези класове използвайки моя любим последна мода Enterprise Service framework като използвам комбинация от XML и @annotations.
Това е накратко за дизаин патернс. Надявам се да съм внесъл яснота и ако някой пак се обади дали позлвам дизаин патернс да внимава, че мога да го замерям с дизаин патернс оттук до тях и обратно.
Ваш,
Паньо
|
| |
|
|
|