Запитання з тегом «design-patterns»

Шаблон дизайну є загальним для багаторазового вирішення часто зустрічається проблеми в розробці програмного забезпечення.

8
Найкращий спосіб моделювати синглтон у реляційній базі даних
Розробляючи схему реляційних баз даних для веб-додатків, я часто знаходжу випадок, коли я в кінцевому підсумку створюю таблицю лише для того, щоб містити один рядок і лише один рядок. Схоже, це неправильний спосіб його проектування, але я не можу придумати щось значно краще, або це, очевидно, «правильний спосіб зробити це». …

4
Паралельні ієрархії - частково однакові, частково різні
Є дуже багато подібних питань 1 ,2 ,3 ,4 , але в цьому питанні це не так, і рішення не здаються оптимальними. Це загальне питання про ООП, припускаючи, що наявні поліморфізм, генерики та міксини. Фактична мова, якою слід скористатись, є OOP Javascript (Typescript), але це та сама проблема в Java …

3
Глобальний контекст запиту - антидіаграма?
Я говорив сьогодні з моїм колегою про веб-рамки Python та наші враження про них. Я сказав йому, що я думаю, що Flask з глобальним запитом погано пахне і є антидією. У документах говорять про контекст запиту: На відміну від цього, під час обробки запиту існує кілька інших правил: поки запит …

1
Використання шаблону відвідувачів з великою ієрархією об'єктів
Контекст Я використовував з ієрархією об'єктів (дерево виразів) "псевдо" шаблон відвідувача (псевдо, так як в ньому не використовується подвійна відправка): public interface MyInterface { void Accept(SomeClass operationClass); } public class MyImpl : MyInterface { public void Accept(SomeClass operationClass) { operationClass.DoSomething(); operationClass.DoSomethingElse(); // ... and so on ... } } Цей …

3
Як ви підходите до дизайну класів в ООП?
Коли я намагаюся створити рішення OO, я, як правило, використовую моделювання CRC, в якому перераховую назви класів (іменники), що вони роблять (дієслова) та як вони співпрацюють з іншими класами. Цей блог має нижче сказати про цей іменниково-дієслівний підхід ...This approach, which I will call “noun and verb,” is so limited …

5
Чи використовуєте ви переваги принципу відкритого закриття?
Принцип відкритого закриття (OCP) говорить, що об'єкт повинен бути відкритим для розширення, але закритим для модифікації. Я вважаю, що я це розумію і використовую разом із SRP для створення класів, які виконують лише одне. І я намагаюся створити багато маленьких методів, які дозволять витягти всі елементи контролю поведінки в методи, …

1
Як інверсія управління пов'язана з інверсією залежності
У багатьох статтях по всьому Інтернету терміни Принцип інверсії контролю та залежності залежно змішуються і використовуються як синоніми (подальше плутанину застосовується за допомогою інструментів, які називаються "DI-контейнери" та "контейнери IoC"). Стаття у Вікіпедії робить гарну роботу, намагаючись пояснити, що IoC - це не те саме, що DI: інверсія управління (IoC) …

5
Підводні камені дизайну, керованого доменом з Entity Framework
Багато навчальних посібників з DDD, який я вивчав, здебільшого охоплюють теорію. Всі вони мають рудиментарні приклади коду (Pluralsight та подібні). В Інтернеті також є спроби кількох людей створити навчальні посібники, що охоплюють DDD за допомогою EF. Якщо ви почнете їх вивчати лише коротко - ви швидко помітите, що вони сильно …

4
Послуга API MVC та RESTful
MVC досить простий. Є Модель, Контролер та Вид. Коли ми створюємо веб-сайт, це все поєднується, коли « клієнт надсилає на сервер запит ключового слова REST -> сервер відповідає запитуваній URL-адресі дії контролера -> який потім викликає моделі (и) для збору / обробки даних, отримує результат -> і повертає результат назад …

2
Чи не є система-компонент суттєвою для роз'єднання / приховування інформації?
Заголовок навмисно гіперболічний, і це може бути просто недосвідчення з малюнком, але ось мої міркування: "Звичайний" або, мабуть, прямолінійний спосіб реалізації суб'єктів - це реалізація їх як об'єктів та підкласи загальної поведінки. Це призводить до класичної проблеми "є EvilTreeпідкласом Treeабо Enemy?". Якщо дозволити багаторазове успадкування, виникає алмазна проблема. Ми могли …

5
Шаблон підрахунку посилань для мов, керованих пам'яттю?
Java та .NET мають чудові сміттєзбірники, які керують пам’яттю для вас, та зручні схеми для швидкого звільнення зовнішніх об’єктів ( Closeable, IDisposable), але лише у тому випадку, якщо вони належать одному об’єкту. У деяких системах ресурс, можливо, потрібно буде споживати незалежно двома компонентами і вивільнятися лише тоді, коли обидва компоненти …

3
Як виконати перевірку вводу без винятків або надмірності
Коли я намагаюся створити інтерфейс для певної програми, я, як правило, намагаюся уникати викидів, що залежать від неперевірених даних. Тож часто трапляється так, що я придумав такий фрагмент коду (це лише приклад заради прикладу, не заперечуйте проти функції, яку він виконує, наприклад у Java): public static String padToEvenOriginal(int evenSize, String …

2
Відокремлення бізнес-логіки від DB-логіки з транзакціями
У нашому застосуванні є три шари. Службовий рівень для надання зовнішнього API. BO-шар для нашої логіки бізнесу та DAO-шар для підключення до нашої бази даних. Скажімо, щоразу, коли ми оновлюємо Файл, ми також хочемо щось змінити в папці, наприклад, "остання змінена дата". Це потрібно зробити в рамках транзакції. Або це …

7
Реалізація стану об'єкта мовою ОО?
Мені було запропоновано деякий код Java, який імітує гонку автомобілів, яка включає реалізацію базової машини. Це не класична державна машина інформатики, а просто об'єкт, який може мати декілька станів і може перемикатися між своїми станами на основі ряду обчислень. Щоб описувати лише проблему, у мене є клас Car, з вкладеним …

2
Принцип сухості в передовій практиці?
Я намагаюся слідувати принципу DRY в моєму програмуванні так сильно, як можу. Нещодавно я вивчав шаблони дизайну в OOP, і в кінцевому підсумку повторював себе досить багато. Я створив шаблон репозиторію разом із візерунками Factory і Gateway, щоб вирішити свою стійкість. Я використовую базу даних у своїй програмі, але це …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.