Яка модель дизайну, на вашу думку, є найпопулярнішою?
Яка модель дизайну, на вашу думку, є найпопулярнішою?
Відповіді:
Я впевнений, що найпоширеніший - «Великий бал бруду». На жаль для всіх нас.
http://en.wikipedia.org/wiki/Big_ball_of_mud
MVC та його варіації, безумовно, є однією з найкращих моделей дизайну.
Якщо ви говорите про шаблони дизайну Gang-of-Four, я б сказав Singleton . Це справді сумний стан справ - майже так, ніби програмісти чують про магію дизайнерських моделей, а потім просто зупиняються після першого.
Якщо ви говорите про структури архітектурного стилю (іншими словами, шаблони дизайну, які охоплюють декілька класів або шарів), я б сказав MVC . Ще кілька популярних - це схема сховища та локатор обслуговування .
Спостерігач
Якщо ви коли-небудь використовували подію. Ви використовували Observer.
Декоратор
Додайте функціональність об’єкту під час виконання через композицію. Мій особистий фаворит.
Редагувати: Також завод , мабуть, один із найпоширеніших.
Фасад
Подумайте про будь-який інтерфейс REST, наприклад, Twitter або API SO. У ньому ховається купа решти речей, які, принаймні у випадку з твіттерами, можуть бути жахливо складними.
Мене цікавить, у яких таблицях db @ @ apklusk зберігаються? І що у нього швидкий кеш? І що @shemnon має таку низьку читацьку аудиторію, твіти завжди залишаються в пам'яті? Ось така магія Фасаду.
Стратегія
Якщо ви коли-небудь використовували ін'єкцію залежності, ви використовували схему стратегії.
Поряд зі своєю попередньою відповіддю, я збираюся додати нову, в яку я зіткнувся сьогодні зі своїм звіром у спадок:
Копіювати Вставити
Під час налагодження я зіткнувся з фрагментом коду, що викликає 2 аналогічні функції:
if(x)
Func1
else
Func2
Func1 і Func2 мали однакові параметри. Я витягнув їх і відрізнявся, і вони на 100% однакові, за винятком викликів Func1, Func3 та Func2, викликів Func4. Я витягнув їх і розправив їх. 100% те саме, за винятком 1 рядка. Тож попередній програміст вирішив скопіювати та вставити дві 50-рядкові вкладені функції, замість того, щоб додавати параметр прапорця, до 2 приватних функцій, які використовуються в точно 1 місці. Це змушує мене плакати.
Якщо говорити про шаблони дизайну Gang-of-Four, я не можу придумати програму, яка не використовує шаблон Observer. Крім того, як зауважив Джако, Синглтон також дуже використовується, на жаль, він став молотом (будь-який програміст використовує його, навіть якщо він не потрібен повністю).
$_SESSION
змінній PHP .
Перекладач
Рідко реалізований, часто використовується. Селектори XPATH, XSLT, Regex, jQuery тощо.
Я здивований, що ніхто ще не сказав "Будівельник". Або "Адаптер". Вони, мабуть, не такі екзотичні, як деякі інші згадані, але я постійно їх використовую. Заводська та абстрактна фабрика також дуже поширені (але вони вже прийняті).
Я не думаю, що він перерахований у GoF, але я постійно користуюся його варіантами.
На рівні розробки програмного забезпечення я можу стверджувати, що найпоширенішими є використання композиту, стратегії та шаблону (і в меншій мірі - завод). Впродовж останнього десятиліття або близько того ми бачили перевагу композиції над спадщиною, коли будували наші системи за допомогою проекту OO. В результаті поєднання згаданих моделей грають набагато важливішу роль, ніж усі інші ІМО.
В архітектурному плані я б сперечався щодо MVC на підприємстві та зразки, засновані на державних машинах на вбудованій стороні речей.