В софтуерното инженерство моделът на дизайн сингълтон е модел на проектиране, който ограничава инстанцията на клас до един обект. Това е полезно, когато е необходим точно един обект за координиране на действията в системата.
В езика за програмиране Dart има множество начини за внедряване на единичен клас
- Използване на фабричен конструктор: Както е показано в примера, можете да използвате фабричен конструктор с частен, вътрешен конструктор, за да създадете единичен клас. Това позволява на класа да контролира собственото си инстанциране и да гарантира, че е създаден само един екземпляр на класа.
Това може да се реализира чрез създаване на единичен клас с частен конструктор и статичен метод, който връща едно и също копие на класа при всяко извикване. Например:
class Singleton { static final Singleton _instance = Singleton._internal(); factory Singleton() { return _instance; } Singleton._internal(); // Other methods and properties... }
За да използвате този клас, трябва да извикате статичния метод Singleton(), за да получите екземпляра на класа, както следва:
Singleton instance = Singleton();
Това гарантира, че може да бъде създаден само един екземпляр на класа Singleton и всеки код, който трябва да използва сингълтона, може да получи достъп до него чрез същия екземпляр.
2. Използване на статично поле: Друг начин за внедряване на единичния модел в Dart е използването на статично поле за задържане на единичния екземпляр на класа. Това може да стане чрез деклариране на статично поле с getter метод, който връща екземпляра на класа. Например:
class Singleton { static final Singleton _instance = Singleton._internal(); factory Singleton() { return _instance; } Singleton._internal(); static Singleton get instance { return _instance; } // Other methods and properties... }
В този случай ще осъществите достъп до сингълтон екземпляра с помощта на instance
getter, като този:
Singleton instance = Singleton.instance;
3. Използване на статичен метод: Друг начин за внедряване на единичния модел в Dart е използването на статичен метод, който връща единствения екземпляр на класа. Това може да стане чрез деклариране на статичен метод, който проверява дали екземпляр на класа вече е създаден и ако не, създава нов екземпляр. Например:
class Singleton { static Singleton _instance; factory Singleton() { if (_instance == null) { _instance = Singleton._internal(); } return _instance; } Singleton._internal(); static Singleton getInstance() { if (_instance == null) { _instance = Singleton._internal(); } return _instance; } // Other methods and properties... }
В този случай ще осъществите достъп до единичния екземпляр с помощта на метода getInstance()като този:
Singleton instance = Singleton.getInstance();
Това са само няколко примера за това как моделът на дизайн сингълтън може да бъде внедрен в Dart. В крайна сметка подходът, който изберете, ще зависи от вашите специфични нужди и дизайна на вашия проект.