singleton
This commit is contained in:
parent
9091f51cfa
commit
91e4cafaa9
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
1. [Фабричный метод (Простая фабрика)](factorymethod/)
|
1. [Фабричный метод (Простая фабрика)](factorymethod/)
|
||||||
2. [Абстрактная фабрика](abstractfactory/)
|
2. [Абстрактная фабрика](abstractfactory/)
|
||||||
|
3. [Одиночка](singleton/)
|
||||||
|
|
||||||
## Компиляция
|
## Компиляция
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Одиночка
|
||||||
|
|
||||||
|
Порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
|
|
@ -0,0 +1,7 @@
|
||||||
|
import singleton.singleton;
|
||||||
|
import std.stdio : writeln;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
writeln(Singleton.getInstance().getDescription());
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
module singleton.singleton;
|
||||||
|
|
||||||
|
class Singleton
|
||||||
|
{
|
||||||
|
private static Singleton singleton;
|
||||||
|
|
||||||
|
private this() {}
|
||||||
|
|
||||||
|
static Singleton getInstance()
|
||||||
|
{
|
||||||
|
if (singleton is null)
|
||||||
|
singleton = new Singleton;
|
||||||
|
|
||||||
|
return singleton;
|
||||||
|
}
|
||||||
|
|
||||||
|
string getDescription()
|
||||||
|
{
|
||||||
|
return "I'm a classic Singleton!";
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue