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

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

4
чи такий спосіб називати функцію поганою практикою?
У мене є такий код: public void moveCameraTo(Location location){ moveCameraTo(location.getLatitude(), location.getLongitude()); } public void moveCameraTo(double latitude, double longitude){ LatLng latLng = new LatLng(latitude, longitude); moveCameraTo(latLng); } public void moveCameraTo(LatLng latLng){ GoogleMap googleMap = getGoogleMap(); cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, INITIAL_MAP_ZOOM_LEVEL); googleMap.moveCamera(cameraUpdate); } Я думаю, що таким чином я усуваю відповідальність за те, …

5
Чи можемо ми повністю замінити успадкування, використовуючи схему стратегії та введення залежності?
Наприклад: var duckBehaviors = new Duckbehavior(); duckBehaviors.quackBehavior = new Quack(); duckBehaviors.flyBehavior = new FlyWithWings(); Duck mallardDuck = new Duck(DuckTypes.MallardDuck, duckBehaviors) Оскільки клас Дак містить усі форми поведінки (реферат), створюється новий клас MallardDuck(який розширюється Duck), здається, не потрібно. Довідка: Шаблон першого дизайну голови, глава 1.

6
Яке найкраще визначення для ін'єкції залежності?
Кожен раз, коли хтось звертається до мене і просить мене визначити введення залежності в концептуальний спосіб і пояснити реальні плюси і мінуси використання DI в розробці програмного забезпечення. Зізнаюся, у мене є певні труднощі з поясненням понять DI. Щоразу мені потрібно розповідати їм історію про принцип єдиної відповідальності, склад над …

4
Що таке "передчасна абстракція"?
Я чув, як фразу кидають навколо, і мені аргументи звучать абсолютно божевільно (вибачте, якщо я тут нахабний, це не мій намір), як правило, це іде щось за принципом: Ви не хочете створювати абстракцію, перш ніж дізнаєтесь, що таке загальний випадок, інакше (1) ви можете помістити речі у свої абстракції, які …

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

6
Як уникнути нескінченного повторення через однаково неоптимальні конструкції?
Тому, напевно, як у багатьох, я часто стикаюся з головними болями з дизайнерськими проблемами, в яких, наприклад, існує певна модель / підхід дизайну, який, здається, інтуїтивно відповідає проблемі і має бажані переваги. Дуже часто є якийсь застереження, який ускладнює реалізацію схеми / підходу без якоїсь роботи, навколо якої потім заперечується …

4
Як саме компілятор відновлює помилку типу?
Я прочитав кілька статей, статей та розділу 4.1.4, розділ 4 « Компілятори: принципи, методи та засоби» (2-е видання) (він же «Книга драконів»), де всі обговорюються теми відновлення помилок синтаксичного компілятора. Однак, експериментуючи з декількома сучасними компіляторами, я бачив, що вони також відновлюються після семантичних помилок, а також синтаксичних помилок. Я …

5
Чи коли-небудь добре порушувати LSP?
Я продовжую це питання , але я перемикаю свою увагу з коду на принцип. З мого розуміння принципу заміщення Ліскова (LSP), які б методи не були в моєму базовому класі, вони повинні бути реалізовані в моєму підкласі, і відповідно до цієї сторінки, якщо ви перекриєте метод в базовому класі, і …

5
Використання різних шаблонів для подібних функцій
Я єдиний розробник проекту, який, як і будь-який проект програмного забезпечення, може бути прийнятий ким-небудь ще. Скажімо, я використав шаблон X для реалізації функції А. Після розробки та закінчення функції я розумію, що міг би реалізувати ту саму функцію за допомогою шаблону Y, про який я щойно дізнався. Але функція …

4
Java: Як реалізувати побудову кроків, для яких порядок встановлення не має значення?
Редагувати: Я хотів би зазначити, що це питання описує теоретичну проблему, і я знаю, що я можу використовувати аргументи конструктора для обов’язкових параметрів або викинути виняток з виконання, якщо API використовується неправильно. Однак я шукаю рішення, яке не вимагає конструкторських аргументів або перевірки часу виконання. Уявіть, у вас такий Carінтерфейс: …

3
Використання інтерфейсів для слабо пов'язаного коду
Фон У мене є проект, який залежить від використання певного типу апаратного пристрою, хоча це неважливо, хто робить цей апаратний пристрій до тих пір, поки він робить те, що мені потрібно для цього. Зважаючи на це, навіть два пристрої, які повинні робити те саме, матимуть відмінності, коли вони не будуть …

5
Генерування Java-класів за допомогою параметрів значення компіляційного часу
Розглянемо ситуацію, коли клас реалізує одне і те ж основне поведінку, методи тощо, але може існувати кілька різних версій цього класу для різних цілей. У моєму конкретному випадку у мене є вектор (геометричний вектор, а не список), і цей вектор може застосовуватися до будь-якого N-мірного евклідового простору (1 мірний, 2 …

3
Уникаючи конструкторів з багатьма аргументами
Тож у мене є завод, який створює об’єкти різних класів. Усі можливі класи походять від абстрактного предка. Фабрика має файл конфігурації (синтаксис JSON) і вирішує, який клас створити, залежно від конфігурації користувача. Щоб досягти цього, фабрика використовує boost :: property_tree для JSON-розбору. Він проходить птахом і вирішує, який конкретний об’єкт …

3
Чи існує схема дизайну для управління глибокими відносинами між багатьма?
У мене виникають проблеми з визначенням цього шаблону даних, я натрапив на роботу над декількома додатками. Він складається з: Тип об'єкта, який складається з багатьох самих об'єктів Другий тип об'єкта, де кожен екземпляр "має багато" першого об'єкта І кожен з під-об'єктів першого об'єкта може змінюватися в кожному об'єднанні до другого …

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

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