Когда люди, наблюдающие за разработкой программ из On High (аналитики, консультанты, ученые, гуру методологов и т. Д.), Видят, что разработчики делают одно и то же снова и снова в различных ситуациях и средах, тогда интеллект, полученный в результате этого наблюдения, может быть извлечен в шаблон. Шаблон - это способ «делать вещи» с помощью имеющихся программных инструментов, представляющих общую абстракцию.
Некоторые примеры:
ОО-программирование отняло у разработчиков глобальные переменные. Для тех случаев, когда им все еще нужны глобальные переменные, но нужен способ, чтобы их использование выглядело чистым и объектно-ориентированным, есть шаблон Singleton .
Иногда вам нужно создать новый объект, имеющий один из множества возможных различных типов, в зависимости от некоторых обстоятельств. Уродливый путь может включать в себя постоянно расширяющийся оператор case
. Принятый «элегантный» способ добиться этого с помощью OO-clean - это шаблон «Фабрика» или «Метод фабрики».
Иногда многие разработчики делают что-то определенным образом, но это плохой способ, который следует не рекомендовать. Это может быть оформлено в antipattern .
Шаблоны - это высокоуровневый способ ведения дел, и большинство из них не зависят от языка. Создавать ли вы объекты с помощью new Object
или Object.new
не имеет значения для шаблона.
Поскольку шаблоны являются чем-то немного теоретическим и формальным, для их описания обычно существует формальный шаблон (хе - перегрузка словом! Скажем, «шаблон»). Такой шаблон может включать в себя:
- Имя
- Эффект достигнут
- Обоснование
- Ограничения и ограничения
- Как это сделать
Идиомы являются чем-то гораздо более низким уровнем и обычно работают на уровне языка. Пример: * * тысяча сорок-две
*dst++ = *src++
в C копирует элемент данных с src
до dst
, увеличивая указатели на оба; обычно это делается в цикле. Очевидно, вы не увидите эту идиому в Java или Object Pascal.
while <INFILE> { print chomp; }
- это (грубо процитировано из памяти) идиома Perl для зацикливания входного файла и распечатки всех строк в файле. В этом утверждении много неявных переменных. Опять же, вы не увидите этот конкретный синтаксис нигде, кроме как в Perl; но старый Perl-хакер быстро рассмотрит это утверждение и сразу узнает, что вы делаете.