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

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

3
Хто повинен контролювати навігацію в додатку MVVM?
Приклад №1: У моєму додатку MVVM відображається подання (давайте використовувати Silverlight для обговорення) і натискаю кнопку, яка повинна перенести мене на нову сторінку. Приклад №2: У цьому ж представленні є ще одна кнопка, яка при натисканні повинна відкрити перегляд деталей у дочірньому вікні (діалоговому вікні). Ми знаємо, що знайдуться об’єкти …

8
Чи корисно використовувати Список переліків?
Зараз я працюю в системі, де є Користувачі, і кожен користувач має одну або кілька ролей. Чи корисно використовувати Список значень Enum для користувача? Я не можу придумати нічого кращого, але це не гаразд. enum Role{ Admin = 1, User = 2, } class User{ ... List<Role> Roles {get;set;} }

5
Чому бази кодів у розробці n-ярусів мають рівний, якщо не більше, код JavaScript зараз?
Я давно займаюся веб-програмуванням, і десь я втратив слідку, чому ми робимо те, що робимо сьогодні (або як ми прийшли робити такі речі)? Я почав з базової веб-розробки ASP, і дуже рано на сторінці змішалися дисплей та бізнес-логіка. Клієнтська розробка дивовижно відрізнялася (VBScript, різні смаки JavaScript), і ми мали багато …

3
Який принцип найменшого здивування?
У програмуванні називається Принцип найменшого здивування? Як ця концепція пов'язана з розробкою хороших API? Це щось застосовне лише до об'єктно-орієнтованого програмування чи воно пронизує й інші методи програмування? Чи пов’язано це з принципом "робити одну річ у своєму методі та робити це добре"?

9
Чи слід уникати використання моделей дизайну в проектах, що постійно змінюються?
Мій друг працює над невеликою компанією над проектом, якого б ненавиджу кожен розробник: на нього тиснуть, щоб випустити якомога швидше, він єдиний, хто, здається, хвилює технічну заборгованість, у замовника немає технічного досвіду тощо. Він розповів мені історію, яка змусила мене задуматися про доцільність моделей дизайну в таких проектах. Ось історія. …

11
Добре розроблене / якісне програмне забезпечення з відкритим кодом [закрито]
Я беру клас розробки програмного забезпечення, де я повинен вибрати програмне забезпечення з відкритим кодом для аналізу з точки зору дизайну програмного забезпечення. Це повинен бути великий проект: не менше 100 000 рядків коду. Мені дуже хотілося б вибрати програмне забезпечення, яке дуже добре розроблене та архітектоване, щоб мати гарну …

2
Вибір правильної моделі дизайну
Я завжди визнавав важливість використання дизайнерських моделей. Мені цікаво, як інші розробники йдуть на вибір найбільш підходящого. Чи використовуєте ви ряд характеристик (як блок-схема), щоб допомогти вам прийняти рішення? Наприклад: Якщо об'єкти пов'язані, але конкретний клас ми не хочемо вказувати, розглянемо Анотацію Коли примірник залишається похідним класам, врахуйте Factory Потрібно …

7
Чому модель дизайну заводських методів корисніша, ніж заняття та називати їх окремо?
З моделей дизайну "Банда з чотирьох" є метод "Фабрика": class Factory(product) case product when a new A when b new B when c new C end new Factory(a) Чому це більш корисно , ніж мати три класи, a, bі cта називаючи їх по окремо?

1
Чи "StringBuilder" є програмою дизайну дизайнера Builder?
Чи обмежений шаблон "Будівельника" адресацією "конструктора телескопічного" антитіл, чи можна сказати, що він також вирішує більш загальну проблему складного створення незмінних об'єктів? StringBuilderКлас має слово «будівельник» в його назві, але це не має нічого спільного з телескопічними конструкторами, він просто допомагає нам зібрати всі дані , які ми повинні передати …

9
Для чого нам потрібен клас Builder при реалізації схеми Builder?
Я бачив багато реалізацій шаблону Builder (головним чином на Java). Усі вони мають клас сутності (скажімо, Personклас) та клас будівельника PersonBuilder. Конструктор "укладає" різні поля та повертає a new Personіз переданими аргументами. Чому нам явно потрібен клас будівельника, а не розміщення всіх методів builder у самому Personкласі? Наприклад: class Person …

10
Як правило, ви надсилаєте об'єкти або їх змінні в функції?
Що є загальноприйнятою практикою між цими двома випадками: function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } або function insertIntoDatabase(long accountId, long thingId, double someValue) { database.insertMethod(accountId, thingId, someValue); } Іншими словами, як правило, краще передавати цілі об’єкти навколо або просто потрібні поля?

7
Чи є кодовим запахом встановити прапор у циклі, щоб використовувати його згодом?
У мене є фрагмент коду, куди я повторюю карту, поки певна умова не відповідає дійсності, а потім пізніше використовувати цю умову, щоб зробити ще якісь речі. Приклад: Map<BigInteger, List<String>> map = handler.getMap(); if(map != null && !map.isEmpty()) { for (Map.Entry<BigInteger, List<String>> entry : map.entrySet()) { fillUpList(); if(list.size() > limit) { …

9
Чи існують шаблони дизайну, які можливі лише на динамічно набраних мовах, як-от Python?
Я прочитав відповідне запитання. Чи існують непотрібні шаблони дизайну в таких динамічних мовах, як Python? і згадав цю цитату на Wikiquote.org Дивовижна річ щодо динамічного набору тексту - це дозволяє висловити все, що можна обчислити. А системи типів не типу типів, як правило, можна вирішити, і вони обмежують вас підмножиною. …

3
Які недоліки у шаблоні ActiveRecord?
Мені цікаво, які недоліки використовується у шаблоні ActiveRecord для доступу до даних та бізнес-об’єктів. Єдине, про що я можу придумати верхній частині голови, - це те, що він порушує Принцип єдиної відповідальності, але модель АР досить поширена, що ця причина сама по собі не здається «достатньо хорошою», щоб виправдати її …

10
Інтерфейси на абстрактному класі
У мене з колегою є різні думки щодо взаємозв'язку між базовими класами та інтерфейсами. Я вважаю, що клас не повинен реалізовувати інтерфейс, якщо цей клас не можна використовувати, коли потрібна реалізація інтерфейсу. Іншими словами, мені подобається бачити такий код: interface IFooWorker { void Work(); } abstract class BaseWorker { ... …

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