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

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

3
У чому сенс шаблону PImpl, коли ми можемо використовувати інтерфейс для тих же цілей у C ++?
Я бачу багато вихідного коду, який використовує ідіому PImpl в C ++. Я припускаю, що його мета - приховати приватні дані / тип / реалізацію, щоб вона могла зняти залежність, а потім зменшити час компіляції та заголовка включити питання. Але інтерфейс / чисто абстрактні класи в C ++ також мають …

11
Чи є канонічна книга про дизайнерські зразки? [зачинено]
Я зацікавлений у вивченні моделей дизайну і хотів би знати, що вважається книжками найвищого рівня при вивченні цього предмету. Чи є там книга, яка є фактичним стандартом для опису найкращих практик, методологій проектування та іншої корисної інформації щодо моделей дизайну? Що з цією книгою робить її особливою?

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

5
Шаблон будівельника: коли вийти з ладу?
Реалізуючи схему Builder, я часто плутаюсь із тим, коли не допустити будівництва, і навіть мені вдається зайняти різні позиції з цього приводу кожні кілька днів. Спочатку пояснення: Якщо не вдалося зробити раннє, я маю на увазі, що побудова об'єкта повинна вийти з ладу, як тільки передається недійсний параметр. Отже, всередині …

4
Поширення винятків: Коли я можу ловити винятки?
MethodA викликає MethodB, який, в свою чергу, викликає MethodC. У методіB або MethodC немає обробляння винятків. Але в MethodA є обробка винятків. У MethodC відбувається виняток. Тепер цей виняток перекидається до MethodA, який обробляє його належним чином. Що з цим не так? На мою думку, в якийсь момент абонент виконує …

11
Чи є змінні помилки антидіаграмою чи хорошим дизайном?
Щоб обробити кілька можливих помилок, які не повинні зупиняти виконання, у мене є errorзмінна, яку клієнти можуть перевіряти та використовувати для викидання винятків. Це анти-шаблон? Чи є кращий спосіб впоратися з цим? Для прикладу цього в дії ви можете побачити API mysqli PHP . Припустимо, що з проблемами видимості (доступними, …

2
Яка мета боксу NaN?
Читання 21 століття C Я прийшов до розділу 6 у розділі "Позначення виняткових числових значень з NaNs" , де пояснюється використання бітів у мантісі для зберігання деяких довільних бітових шаблонів, використання їх як маркерів чи покажчиків (книга згадується що WebKit використовує цю техніку). Я не дуже впевнений, що зрозумів корисність …

13
Шаблони дизайну - ви їх використовуєте?
Будучи студентом ІТ, мені нещодавно ознайомився з моделями дизайну одним з наших викладачів. Я зрозумів, для чого вони потрібні, але деякі аспекти все ще мене клопочуть. Чи справді їх використовує більшість програмістів? Якщо говорити про досвід, у мене виникли деякі проблеми під час програмування, речі, які я не міг вирішити …

5
Які падіння MVC? [зачинено]
Я використовую MVC / MV * з моменту, коли я почав фактично організовувати свій код років тому. Я використовую його так довго, що я навіть не можу придумати будь-який інший спосіб структурування свого коду, і кожна робота, яку я мала після стажування, базувалася на MVC. Моє запитання, що таке падіння …

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

2
Чи є продуктивність єдиною причиною не використовувати SignalR (websockets) повністю замість традиційного API REST?
Я використовував SignalRдля досягнення функцій обміну повідомленнями в реальному часі у кількох своїх проектах. Здається, працює надійно і дуже легко навчитися користуватися. Спокуса, принаймні для мене, - відмовитися від розробки сервісу Web API і використовувати його SignalRдля всього. Я відчуваю, що цього можна досягти продуманим дизайном, і якби це було, …

7
Коли опитування подій було б краще, ніж використання шаблону спостерігачів?
Чи існують сценарії, коли опитування подій було б краще, ніж використання шаблону спостерігачів ? У мене є страх використовувати опитування, і я б почав його використовувати лише в тому випадку, якщо хтось дасть мені хороший сценарій. Все, що я можу придумати, - це наскільки модель спостерігачів краща, ніж опитування. Розглянемо …

3
Що таке помічник? Це шаблон дизайну? Це алгоритм?
Можливо, трішечки, але я не можу знайти цю відповідь ніде через Google, щоб переконатися, що Software Engineering має відповідь: Що таке помічник? Я бачив, як назва використовується повсюдно (назви модулів, назви класів, назви методів), як би семантика була глибокою та значущою, але в контексті інформатики (хоча я не маю в …

1
Яка різниця між фабричним візерунком та абстрактним заводом?
Нарешті почавши серйозно намагатися вивчити деякі основні зразки (дуже пізно в кар’єрі, але це вже інша історія), я намагаюся обернути голову навколо відмінностей між «Фабричним зразком» та «Фабрикою абстрактних». Які ключові відмінності між цими двома моделями? Я розумію, що Фабричний метод створює об'єкти шляхом успадкування, а абстрактний Factory робить це …

6
Чому слід уникати наслідування Java "Розширення"
- сказав Джейм Гослінг "Ви повинні уникати успадкування впровадження, коли це можливо." і замість цього використовувати інтерфейс успадкування. Але чому? Як ми можемо уникнути успадкування структури об’єкта за допомогою ключового слова "extends" і водночас зробити наш код об'єктно орієнтованим? Чи може хтось, будь ласка, навести об'єктно-орієнтований приклад, що ілюструє цю …

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