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

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

4
Створіть систему ігор на основі поведінки / компонентів
Фон Я займаюся розробкою ігор як хобі і шукаю кращого способу їх розробки. В даний час я використовую стандартний підхід OOP (я займаюся розвитком підприємства вже 8 років, так що це відбувається на природі). Візьмемо для прикладу "baddie" public class Baddie:AnimatedSprite //(or StaticSprite if needed, which inherit Sprite) { //sprite …

4
Як змінюється мислення щодо моделей дизайну та практики OOP у динамічних та слабо типових мовах?
У цих напрямках є досить корисне питання (" Шаблони дизайну, що не є OOP? "), Але мені цікавіше перехідна точка зору для тих, хто тільки починає працювати з динамічними та слабо набраними мовами. Тобто: скажімо, я багато років програмував на C ++, C # або Java і поглинав багато мудрості …

5
Модифікована схема розробки стратегії
Я нещодавно почав розглядати шаблони дизайну, і одне, що я кодую, цілком відповідала б шаблону стратегії, за винятком однієї невеликої різниці. По суті, деякі (але не всі) моїх алгоритмів потребують додаткового параметра або двох, переданих їм. Тож мені або потрібно буде передайте їм додатковий параметр, коли я викликаю їхній метод …

2
Статичний метод створення - плюси і мінуси порівняно з конструкторами
Які плюси та мінуси використання статичних методів створення об'єктів над конструкторами? class Foo { private Foo(object arg) { } public static Foo Create(object arg) { if (!ValidateParam(arg)) { return null; } return new Foo(arg); } } Мало що я можу придумати: Плюси: Повернути null замість викидання виключення (назвіть його TryCreate). …

4
Як перетворити послугу, щоб вона була простішою
Ми маємо залежність від стороннього сервісу, який виявляє гігантський інтерфейс, нам потрібні лише три методи. Крім того, інтерфейс часто змінюється ... Я вирішив зафіксувати інтерфейс у класі в нашому проекті і лише розкрити потрібні нам методи. Але я не впевнений, як мені обробляти повернені значення ... Інтерфейс повертає об'єкт типу …

2
Службовий рівень програми виклику функцій бази даних. Погана архітектура?
Сценарій: Стек: Java, весна, сплячка. Модель: Клієнт-серверна програма. Шаблон: Контролер перегляду моделі (MVC). Класи службового шару мають три форми поведінки: Деякі служби мають ділове правило в рамках методів і делегують наполегливість додатку. Подібно до: EntityManager.save (сутність); Деякі служби просто викликають функцію бази даних (передаючи параметри). CallableStatement cls = con.prepareCall ("{call …

4
Скорочення котлоагрегату в класі, який реалізує інтерфейси за допомогою композиції
У мене клас: Aце складова низки менших класів B, Cі D. B, CІ Dреалізовувати інтерфейси IB, ICі IDвідповідно. Оскільки Aпідтримується весь функціонал B, Cі D, Aреалізується IB, ICі IDтак само, але це, на жаль, призводить до безлічі перенаправлень у впровадженніA Так: interface IB { int Foo {get;} } public class …

2
.NET Архітектура / шари проекту MVC
Плануючи архітектуру середньомасштабного веб-додатка MVC, як ви реалізуєте шари, щоб вони були максимально відокремленими та легкими для тестування? (в основному слідкуйте за найкращими методами) Скажімо, я спочатку використовую код у якості доступу до даних. Я бореться з тим, як визначити "бізнес-логіку" як і як мається на увазі взаємодія з рівнем …

6
Які практичні способи реалізації СРП?
Просто якими практичними прийомами користуються люди, щоб перевірити, чи порушує клас єдиний принцип відповідальності? Я знаю, що у класу повинна бути лише одна причина для зміни, але в цьому реченні дещо не вистачає практичного способу реально реалізувати це. Єдиний спосіб, який я знайшов, - це використовувати речення "The ......... повинен …

4
Приховування / відключення функцій для деяких користувачів
Скажімо, у мене є безкоштовна і платна версія програми. Платна версія - це сукупність безкоштовної версії щодо функцій, доступних користувачам, тобто платна версія матиме всі функції безкоштовного додатка плюс додаткові. Чи існує схема перемикання доступності функцій на основі прапора, який завантажується під час запуску (наприклад, безкоштовно / оплачено)? Мені не …

1
OOP ECS проти чистого ECS
По-перше, мені відомо, що це питання пов’язане з темою розвитку ігор, але я вирішив його задати тут, оскільки він дійсно зводиться до більш загальної проблеми програмного забезпечення. Протягом минулого місяця я багато читав про Entity-Component-Systems, і зараз цілком задоволений цією концепцією. Однак є один аспект, який, здається, не вистачає чіткого …

4
Шаблон копіювання класу?
Зараз я працюю соло розробником свого поточного проекту. Я успадкував проект від іншого розробника, який відтоді покинув компанію. Це веб-додаток із стилем перегляду моделей у C #. Він використовує Entity Framework для реляційного відображення об'єктів. І існує два різних набори класів для типів у доменній моделі. Один набір використовується для …

5
Найкраща модель дизайну OOP для послідовності операцій
Я працюю над додатком, модуль якого здійснює наступні фінансові операції послідовно: Коли користувач вимагає перерахувати певну суму на її банківський рахунок: перевірити, чи може відбутися будь-яка транзакція зараз? (транзакція може бути здійснена лише протягом певного періоду часу) перевірити, чи користувач просив зняти мінімальну суму перевірити, чи є у користувача обліковий …

4
Як використовувати ін'єкцію залежності в поєднанні з заводською схемою
Розглянемо модуль, який відповідає за аналіз файлів будь-якого типу. Я думаю про використання схеми стратегії для вирішення цієї проблеми, як я вже пояснював тут . Будь ласка, зверніться до пов’язаної публікації, перш ніж продовжувати це питання. Розглянемо клас B, який потребує вмісту файлу product.xml. Цей клас повинен буде інстанціювати відповідний …

1
Документ Петра Норвіга, цитований Бренданом Айхом
Я читаю «Кодери на роботі», і Брендан Ейх цитує доповідь Норвіга, коли він був в Арлекіні, «про те, як дизайнерські зразки насправді є лише вадами вашої мови програмування». Хтось може надати посилання на цей документ?

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