Единичен модел на програмиране в Delphi

Ще ви разкажа днес за сингълтон‘А - така наречените„ самотници “.

Същността на сингълтона е, че той гарантира, че съществува само в един екземпляр и осигурява достъп в една точка в кода.

Нека да анализираме не само същността на сингълтон, но и да направим шаблон от него за наследяване в производствен мащаб.:]

Компетентният подход към организирането на OOP програми, използвайки сингълтън, често дава много оптимални резултати.

Ще обясня накратко една еволюционна верига в програмирането, която логично трябва да доведе до сингълтън:

  • Да приемем, че начинаещ програмист използва глобални променливи изцяло и без страх. Без да се оплаквате от всичко това, защото изглежда, че всичко е умно и за пореден път не е нужно да мислите за никакви структури.
  • Разбира се, работи с университетски проблеми, но не повече.
  • Започвайки да пише нормите на програмата по размер и достигайки до 3k-4k редове, кодерът вече се врязва, че няма да отиде по-нататък по глобалните променливи, поне от факта, че вече е вкарал пространството от имена.
  • Добре, мисли, аз ще прокарам оптималност! И той започва да тъпче най-важните променливи в класове и структури, а те от своя страна в обединяващите модули. „О, оказва се колко по-лесно стана достъпът до методите и свойствата на класовете, тук определено няма да сбъркате!“ - радва се той.
  • Е, като цяло, с такива и такива опити, програмата в 4k редове най-накрая е завършена.

И тъй като Ако има тенденция за развитие на оптимизацията в това отношение, тогава всеки любознателен ум ще попита - "и какъв е абсолютът на развитието в това?".

И тогава отговорите водят до сингълтън.

Но както забелязах за прилагането на сингълтън, не много хора знаят.

Най-често срещаният пример - те основно се спират на класове като TSomeManager, декларират глобален екземпляр на този клас в същия модул и го създават при инициализация и го унищожават, съответно при финализиране.

Нека да разгледаме достойнствата на сингълтона над глобалните променливи:

  • Конфликтите с имена са сведени до минимум;
  • Не се разсейваме от инициализацията на класа. Сингълтън - той винаги е един и често инициализацията е автоматична;
  • Няма проблем с многопоточност. (със сигурност не до степен, в която критичните секции се пренебрегват);
  • Когато промените програмната логика за единичен, трябва само да коригирате интерфейса, а с глобални променливи трябва да проследите целия код в цялата програма, който е свързан с тях.

Сега нека разгледаме и сравним опциите за внедряване на единични модели:

един. Намерих тази статия. В който се предлага да се приложи шаблонът чрез инжектиране на методите му директно в класа, което трябва да се направи самостоятелно. Честно казано Гря е най-"негъвкавият" пример.

2. Можете да намерите код като този в wikipedia: