Единичен модел на програмиране в Delphi
Ще ви разкажа днес за сингълтон‘А - така наречените„ самотници “.
Същността на сингълтона е, че той гарантира, че съществува само в един екземпляр и осигурява достъп в една точка в кода.
Нека да анализираме не само същността на сингълтон, но и да направим шаблон от него за наследяване в производствен мащаб.:]
Компетентният подход към организирането на OOP програми, използвайки сингълтън, често дава много оптимални резултати.
Ще обясня накратко една еволюционна верига в програмирането, която логично трябва да доведе до сингълтън:
- Да приемем, че начинаещ програмист използва глобални променливи изцяло и без страх. Без да се оплаквате от всичко това, защото изглежда, че всичко е умно и за пореден път не е нужно да мислите за никакви структури.
- Разбира се, работи с университетски проблеми, но не повече.
- Започвайки да пише нормите на програмата по размер и достигайки до 3k-4k редове, кодерът вече се врязва, че няма да отиде по-нататък по глобалните променливи, поне от факта, че вече е вкарал пространството от имена.
- Добре, мисли, аз ще прокарам оптималност! И той започва да тъпче най-важните променливи в класове и структури, а те от своя страна в обединяващите модули. „О, оказва се колко по-лесно стана достъпът до методите и свойствата на класовете, тук определено няма да сбъркате!“ - радва се той.
- Е, като цяло, с такива и такива опити, програмата в 4k редове най-накрая е завършена.
И тъй като Ако има тенденция за развитие на оптимизацията в това отношение, тогава всеки любознателен ум ще попита - "и какъв е абсолютът на развитието в това?".
И тогава отговорите водят до сингълтън.
Но както забелязах за прилагането на сингълтън, не много хора знаят.
Най-често срещаният пример - те основно се спират на класове като TSomeManager, декларират глобален екземпляр на този клас в същия модул и го създават при инициализация и го унищожават, съответно при финализиране.
Нека да разгледаме достойнствата на сингълтона над глобалните променливи:
- Конфликтите с имена са сведени до минимум;
- Не се разсейваме от инициализацията на класа. Сингълтън - той винаги е един и често инициализацията е автоматична;
- Няма проблем с многопоточност. (със сигурност не до степен, в която критичните секции се пренебрегват);
- Когато промените програмната логика за единичен, трябва само да коригирате интерфейса, а с глобални променливи трябва да проследите целия код в цялата програма, който е свързан с тях.
Сега нека разгледаме и сравним опциите за внедряване на единични модели:
един. Намерих тази статия. В който се предлага да се приложи шаблонът чрез инжектиране на методите му директно в класа, което трябва да се направи самостоятелно. Честно казано Гря е най-"негъвкавият" пример.
2. Можете да намерите код като този в wikipedia: