Чому модель введення залежності не була включена в групу з чотирьох ? Чи був GOF раніше широко поширеним автоматизованим тестуванням? Чи в даний час введення залежності вважається основною схемою?
Чому модель введення залежності не була включена в групу з чотирьох ? Чи був GOF раніше широко поширеним автоматизованим тестуванням? Чи в даний час введення залежності вважається основною схемою?
Відповіді:
Я був редактором журналу « Розробка програмного забезпечення », коли вийшла книга «Банда чотирьох», і я можу з повною впевненістю сказати, що тестування одиниць не було поширеною практикою в 1994 році, коли спочатку були опубліковані шаблони дизайну .
У 1994 році C ++ була найбільш часто використовуваною об'єктно-орієнтованою мовою, і більшість людей, які її програмували, походили з C. Однією з речей "мислення в об'єктах", яких у людей просто не було, є ідея сотень чи тисяч вхідних точок у вашу програму. Ви думали про те main()
. Якщо ви працювали над великим проектом, у вас може виникнути (як правило, досить складний) makefile для створення програми на основі модулів. Але "одиничне тестування"? Починати процес, будувати необхідний контекст пам'яті, виконувати його та зривати на основі методу ? Це було дуже радикально.
Java зробила програмування декількох точок вступу більш очевидним. На момент початкового буму Dot-Com, тестування одиниць була добре відомою методикою, але саме JUnit (приблизно 2001?) Змусило її загорітися і стала загальною практикою.
Хоча Стратегія та загальна концепція програмування інтерфейсу були частиною GoF та сейтгейсту середини 90-х, ідея ін'єкції прийшла досить пізно до партії (приблизно '03 -'05?). Чесно кажучи, мої сиві волоски все ще досить сумнівні щодо цього аспекту DI ("Геть з моєї галявини, ти, чорт, конфігураційні файли!").
Вони назвали це стратегією .
Їх Стратегія, схоже, має всі особливості введення залежностей без складної звукової назви.
Я думаю, що введення залежностей є більш актуальним при розділенні впровадження в рівні. Ще одна область, де ми думаємо про введення залежності, - це тестування на одиницю. І ваше попереднє побачення здається правильним. Якщо банди збиратимуть та відокремлюватимуть схеми у 2012 році, безумовно, введення залежності буде.
Стратегія може бути обговорена, але стратегія не говорить про введення залежності. Але при використанні шаблону стратегії в одному проекті або dll (усі класи та інтерфейси залишаються в одному проекті) виявляється, що ми робимо ін'єкцію залежності. Насправді ми це не так.
Тепер, якщо класи та інтерфейси, згадані в шаблоні стратегії, розділені в різних проектах або рівнях, то МИ повинні будуть використовувати методи введення залежності. Ми могли б використовувати файли конфігурації єдності (однак не можлива зміна часу виконання). Але схема стратегії не говорить про те, як ввести залежність.
Якщо існує схема, яка дуже нагадує ін'єкційну залежність, то це абстрактний заводський метод. Цей шаблон можна використовувати в рамках стратегії для введення залежності.
відповідь Стратегія на 100% правильна. Я проголосував за це, але можу прокоментувати.
"Стратегія дозволяє алгоритму змінюватись незалежно від клієнтів, які його використовують. [1] Стратегія є однією з моделей, включених у впливову книгу" Шаблони дизайну "Гамми та ін., Яка популяризувала концепцію використання шаблонів для опису дизайну програмного забезпечення."
Шаблон дизайну не залежить від його використання. Введення залежностей реалізується за допомогою шаблону стратегії. Якби ми назвали кожен шаблон на основі випадку використання, нам доведеться перейменовувати багато шаблонів.
Шаблон сховища не є новим шаблоном, це шаблон шаблону.
"У шаблонній методиці цього шаблону проектування один або більше кроків алгоритму можуть бути замінені підкласами, щоб дозволити різну поведінку, забезпечивши, щоб всебічний алгоритм все ще виконувався."
Часто шаблони є декількома візерунками, об'єднаними та названими такими як MVC.
У GOF не було інтерфейсів використовуваних класів Pure Abstract, а також скористалася здатністю C ++ успадковувати більше ніж один клас.