|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
Design Patterns
|
|
Автор |
Pekoнcтpykтop (дарвинист) |
Публикувано | 29.06.12 16:12 |
|
Да разведрим лятната петъчна меланхолия с една темичка по същество.
Да кажем, имаме едно модулче, което прави нещо си. В един момент, постъва искане това модулче да праща някъде си статистика за работата си, при настъпване на определени обстоятелства. Проблема е, че статистиката включва данни, които на модула не са му необходими и съответно ги няма. Как е по-правилно да се направи - да се вкарват ненужните данни и модула да си праща сам статистиката, или да се добави callback и всеки клиент на модула да се грижи за това?
| |
|
вземай пример от държавната бюрокрация - трябват не трябват, искаш ги данните, да му е гадно на просителя
NE SUTOR ULTRA CREPIDAM
| |
|
Първия вариант е по-трудоемък, но потребителя трябва да е гъделичкан, особено ако целта е след 10 години това неща да работи.
С други думи, ако "инвеститорът" е готов да си плати качествено програмиране, то бих избрал точно този вариант... Аз скачам според "тоягата".
| |
|
В крайна сметка - първия начин. По метода на северозападния ъгъл, не можах да реша кое е по-канонично.
| |
|
Ако нещата са написани на Джава аз бих вкарал малко аспектно-ориентирано програмиране. Логването е перфектно като аспект - после го закачаш с конфигурация където ти трябва.
| |
|
По метода на северозападния ъгъл...
Не се сещам за този метод какъв беше.
Аз съм от хората, които обичат по-стратегическите решения.
| |
|
Все пак говорим за съществуващ проект и внасянето на изменения в него.
| |
|
Тогава наистина ползвай Observer pattern с callback.
| |
|
Ако е на джава, друг вариант е ServiceLoader-а, така няма да си усложняваш прекалено много живота или по-скоро на тези след теб, както ако използваш аспекти. Но наистина не разбрах и аз дали е на джава. Ей, от кога не сме писали в такава тема, вместо да си разтягаме тази и онази работа ;)
Редактирано от __iceman__ на 05.07.12 11:59.
| |
|
Е, късно, направих го с тъпкане на данни в модула вече.
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|