singleton

This commit is contained in:
Alexander Zhirov 2022-11-14 21:54:08 +03:00
parent 9091f51cfa
commit 91e4cafaa9
4 changed files with 32 additions and 0 deletions

View File

@ -17,6 +17,7 @@
1. [Фабричный метод (Простая фабрика)](factorymethod/) 1. [Фабричный метод (Простая фабрика)](factorymethod/)
2. [Абстрактная фабрика](abstractfactory/) 2. [Абстрактная фабрика](abstractfactory/)
3. [Одиночка](singleton/)
## Компиляция ## Компиляция

3
singleton/README.md Normal file
View File

@ -0,0 +1,3 @@
# Одиночка
Порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

7
singleton/app.d Normal file
View File

@ -0,0 +1,7 @@
import singleton.singleton;
import std.stdio : writeln;
void main()
{
writeln(Singleton.getInstance().getDescription());
}

21
singleton/singleton.d Normal file
View File

@ -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!";
}
}