Шаблони проектування - Рубрика
Знайомі незнайомці або ще раз про використання патернів проектування
На тему патернів проектування написано тонни статей та видано багато книг. Однак ця тема не перестає бути актуальною, оскільки патерни дозволяють користуватися вже готовими, перевіреними часом рішеннями, що дозволяє скорочувати час розробки проектів за рахунок поліпшення якості коду і зменшення технічних боргів.
З моменту появи патернів проектування з'являються нові приклади їх ефективного використання. І це чудово. Однак тут не обійшлося і без ложки дьогтю: кожна мова має свою специфіку. А вже golang - і поготів (у ньому немає навіть класичної моделі ОВП). Тому і виникають варіації шаблонів, стосовно окремо взятих мов програмування. У цій статті хотілося б торкнутися теми патернів проектування стосовно golang.
ООП мертво, нехай живе ООП

Джерела натхнення
Я не буду (поки що?) аналізувати ECS-архітектуру, що вийшла з цієї доповіді, але зосереджуся на коді «поганого ОВП» (схожого на хитрощі «чучело») з його початку. Я покажу, як він виглядав би насправді, якби правильно виправили всі порушення принципів OOD (object-oriented design, об'єктно-орієнтованого проектування).
Спойлер: усунення всіх порушень OOD призводить до покращень продуктивності, аналогічним перетворенням Араса в ECS, до того ж використовує менше ОЗП і вимагає менше рядків коду, ніж ECS-версія!
TL;DR: Перш ніж дійти висновку, що ООП відстій, а ECS рулить, зробіть паузу і вивчіть OOD (щоб знати, як правильно використовувати ООП), а також розберіться в реляційній моделі (щоб знати, як правильно застосовувати ECS). Читати повністю »
Паттерни проектування у Cocos2d-x
Стаття буде цікава для розробників Cocos2d-x та тих, хто вивчає патерни. Вона виконана у формі короткого конспекту, в якому можна швидко подивитися де застосовується той чи інший патерн у Cocos2d-x. Метою статті не є повний опис кожного патерну. Читати повністю »
Шаблон проектування Entity-Component-System - реалізація та приклад гри

У цій статті хочу обговорити шаблон проектування «сутність-компонент-система» (Entity-Component-System,ECS ). З цієї теми можна знайти багато інформації в Інтернеті, тому я не глибоко вдаватимуся в пояснення, а більше розповім про мою власну реалізацію.
Частина 1: Реалізація шаблону Entity-Component-System на C++
Почнемо спочатку. Повний вихідний код моєї реалізації ECS можна знайти в репозиторії github.
Entity-Component-System, що в основному використовується в іграх - це шаблон проектування, що забезпечує величезну гнучкість у проектуванні загальної архітектури програмного забезпечення [1] . Такі великі компанії, як Unity, Epic або Crytek використовують цей шаблон у своїх фреймворках, щоб надати розробникам дуже багатий на можливості інструмент, за допомогою якого вони можуть розробляти власне ПЗ. Прочитати ширше обговорення з цієї тематики можна у цих постах [2,3,4,5]. Читати повністю »
Те, як саме виглядатиме конкретна реалізація MVC, залежить від фреймворку. В результаті ми отримуємо масу різних реалізацій, що збиває з пантелику і веде до безладу. Особливо це помітно, коли в одному проекті використовують кілька фреймворків. Ця ситуація змусила мене запитати: «А чи є спосіб кращим?». Читатиповністю »
Класифікація тексту за допомогою нейронної мережі на JAVA
– Наша Олена йде в декрет, – повідомив начальник, – тому нам треба шукати заміну на час її відсутності. Частину завдань ми розподілимо, а от як бути із завданням перенаправлення звернень користувачів?
Ліна – це наш співробітник технічної підтримки. Один з її обов'язків – розподіл звернень, що надходять на електронну пошту, між фахівцями. Вона аналізує звернення та визначає ряд характеристик. Наприклад, "Тип звернення": помилка системи, користувачеві просто потрібна консультація, користувач хоче якусь нову функціональність. Визначає "Функціональний модуль системи": модуль бухгалтерії, модуль паспортизації обладнання тощо. Проставивши всі ці характеристики, вона перенаправляє звернення до відповідного фахівця.
– Давай я напишу програму, яка це робитиме автоматично! – відповів я.
На цьому захоплюючий роман закінчуємо та переходимо до технічної частини.

"Фабричний метод" у розробці під Android. Найкращий спосіб обробки пушкою
У цій статті я хотів би поговорити про один із класичних шаблонів проектування в Android-розробці: фабричному методі (Fabric method). Вивчати його ми на прикладі роботи з Firebase Cloud Messaging (далі FCM). Мета — донести до розробників-початківців, які поки не оволоділи повною мірою всіма перевагами ОВП, важливість застосування прийомів об'єктно-орієнтованого проектування.
Шаблони проектування з обличчям людини

Шаблони проектування — це спосіб вирішення проблем, що періодично виникають. Точніше, це посібники з вирішення конкретних проблем. Це не класи, пакети або бібліотеки, які ви можете вставити всвоє додаток і чекати чаклунства.
Як сказано у Вікіпедії:
У програмній інженерії шаблон проектування додатків — це багаторазово застосовуване вирішення проблеми, що регулярно виникає в рамках певного контексту архітектури додатка. Шаблон - це не закінчене архітектурне рішення, яке можна безпосередньо перетворити на вихідний або машинний код. Це опис підходу до вирішення проблеми, який можна застосовувати у різних ситуаціях.
Будьте обережні
- Шаблони проектування – не «срібна куля».
- Не намагайтеся запроваджувати їх примусово, наслідки можуть бути негативними. Пам'ятайте, що шаблони — це способивирішення, а непошуку проблем. Тож не перемудріть.
- Якщо застосовувати їх правильно і в потрібних місцях, вони можуть бути порятунком. В іншому випадку у вас буде ще більше проблем.
У статті наведено приклади на PHP 7, але нехай вас це не бентежить, адже закладені у шаблонах принципи незмінні. Крім того,впроваджується підтримка інших мов.
Шаблон Presenter в Laravel
Якщо ви використовуєте Laravel у своєму проекті досить довго, швидше за все ваші моделі Eloquent стали досить великими. Згодом їх стає все важче підтримувати, у міру того, як вони обростають функціоналом. Коли ви пишете код для кожного випадку, де ви використовуєте ваші моделі, виникає спокуса "відгодувати" наші моделі доти, доки вони не розжиріють.

У таких ситуаціях ми можемо скористатися патерном Декоратор, який дозволить нам виділити код, специфічний для кожного випадку окремий клас. Наприклад, ми можемо використовувати декоратори для того, щоб розділити формування подання для PDF-документа, CSV або відповіді API.повністю »
Unity та MVC: як прокачати розробку гри
Я несправжній зварювальник і переклад статті дався мені важко, тому я назву його вільним — заздалегідь очищу совість, якщо десь надто перефразував оригінал. Буду радий вказівкам на помилки перекладу, граматики тощо. в лічку.
Зазвичай програмісти знайомляться із професією, починаючи з Hello World. Потім ставлять все більші і більші цілі і кожне нове завдання призводить до важливого уроку: чим більше проект, тим заплутаніший код.

І у великих, і в маленьких командах ніхто не кодить так, як йому заманеться. Код повинен бути підтримуваним та розширюваним. Адже компанія, в якій ти працював, не звертається до тебе щоразу, коли потрібно виправити баг або покращити код. Та й ти навряд чи цього хочеш.
Тому є шаблони проектування; вони — збірники правил для стандартизованого структурування проекту, які допомагають розділити та організувати велику кодову базу та спростити роботу з незнайомим кодом.Читати повністю »
">