Category паттерн вторника

Запізнілий “Патерн Вівторка” #17: Спостерігач (Observer)

Багато людей люблять дивитися бокс. Але крім того, що люди його дивляться хтось то все діло фінансує. Левова частка тих фінансів приходить від всяких фанів і азартних гравців, які програють купу грошей ставлячи ставки. Уявімо що ми маємо боксерську гру і є двоє людей що ставлять ставки – один любить ризиковані ставки, а інши навпаки

Читати далі


“Патерн Вівторка” #16: Компонувальник (Composite)

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

Читати далі


“Патерн Вівторка” #15: Команда (Command)

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

Читати далі


“Патерн Вівторка” #14: Міст (Bridge)

Уявімо, що ви володієте будівельною компанією, яка будує дачні будинки і житлові масиви. Зазвичай будівлі є двох типів – або із цегли або із бетонних плит. Оскільки ви бос, то ви вирішили поділити всіх ваших робітників на команди, які будуть вміти робити одні і ті ж операції: BuildFoundation, BuildRoom, BuildRoof. Але оскільки будівлі двох типів

Читати далі


“Патерн Вівторка” #13: Одинак (Singleton)

Я знаю що Діма уже написав чудову статтю про Синглтон тут. Але я всештки ще перекладу свою. Уявімо що нам потрібна глобальна логувальна система в програмі, також нам треба логувати наші повідомлення десь в якийсь файл, при чому нумеруючі повідомлення в не залежності із якого закутка приграми вилетіла помилка. Як можна це зробити? ОДИНАК Клас

Читати далі


“Патерн Вівторка” #12: Стан (State)

Уявімо, що ми маємо розробити програму для відправки Замовлень (Orders). Замовлення можуть бути в одному із декількох станів: Новий (New Order), Зареєстрований (Registered), Погоджений (Granted), Відправлений (Shipped), Оплачений (Invoiced), Відмінений (Cancelled). Також є певні правила, по яких Замовлення може перейти в інший стан. Для прикладу не можна відправити не зареєстроване замовлення. Крім правил переходу є

Читати далі


“Патерн Вівторка” #11: Прототип (Prototype)

Чи ви коли небуть процювали із Outlook або ж якимось іншим календарем, що дозволяє копіювати календарні зустрічі із одного дня на інший? Для прикладу уявімо собі, що ваш друг назначив маленьку вечірку із пивом на п’ятницю, 22 жовтня, також він виділив час під вечірку із 7-мої вечора до 3-тьої ночі, поставив високий приорітет, а ще

Читати далі


“Патерн Вівторка” #10: Ітератор (Iterator)

Уявіть, що ви розробник статегічної воєнної гри. Армія має складну структуру: вона складається із героя і трьох груп. Коли Король видає указ і ресурси щоб полікувати всіх воїнів (Герой також є воїном) Ви хочете проітерувати по всіх солдатах і викликати метод treat() на кожному інстансі. Як це можна зробити легко і без вникання в структуру

Читати далі


“Патерн Вівторка” #9: Відвідувач (Visitor)

Уявімо собі, що ви нарешті спромоглися створити свою власну компанію, і оскільки вона пристойного розміру, ви вирішили орендувати для неї цілу будівлю. Оскільки у нас держава дуже хороша і дбає про підприємства, щоб у них усе відповідало вимогам, постійно висилаються всякі перевірки. Причому правила, по яких перевіряють ваше підприємство, постійно міняються. Найближчим часом вам слід

Читати далі


“Патерн Вівторка” #8: Хранитель (Memento)

Якщо ви коли небуть бавилися в стрілялки, то дуже вірогідно, що ви знайомі із значенням хот-кеїв F5 та F9. I навіть якщо ви таки не мали шансу в житті погратися в “шпільки”, ідея швидкого збереження поточного стану і відновлення до нього ідеологічно є знайомою (навіть якщо це було Ctrl+Z у програмі Word). Натискаючи F5 ви

Читати далі