Реєстр (шаблон проєктування)

Реєстр (англ. Registry) — шаблон проєктування, який пропонує створити відомий усій системі об'єкт, що відповідає за отримання загальних об'єктів чи сервісів.

ОписРедагувати

Є декілька варіантів для того, щоб знайти об'єкт. Деколи його можна знайти у головній сутності. Наприклад, якщо потрібно знайти рахунок, то пошук можна почати із покупця. Але деколи немає відповідного об'єкта для пошуку. Як у випадку коли відомий ідентифікатор покупця, але немає посилання на нього. Тоді потрібно мати спеціальний об'єкт для пошуку. Та все одно не відомо, як знайти сам об'єкт для пошуку.

Рішенням буде створити глобальний об'єкт для пошуку.

РеалізаціяРедагувати

Реєстр не обов'язково має бути глобальним. Він лише повинний функціонувати таким чином. Як приклад, його методи можуть бути статичні, а поля мати локальну область видимості на рівні процесу чи потоку.

public static class Registry<T>
{
	public static IDictionary<string, T> records = new ConcurrentDictionary<string, T>();

	public static void Add(string key, T value)
	{
		records.Add(key, value);
	}

	public static T Get(string key)
	{
		return records[key];
	}
}

Див. такожРедагувати

ДжерелаРедагувати