Фасад и репозиторий: они должны быть синглтон? - PullRequest
0 голосов
/ 01 декабря 2011

Мне нужно спроектировать несколько репозиториев для обработки операций CRUD.Я положу все эти репозитории в один фасад.

Должен ли этот фасад быть синглтоном?

Пример:

FacadeLibrary [Singleton?]

- BookRepository |ClientRepository |RentalRepository

Или, возможно, хранилище должно быть Singleton?

Или ни того, ни другого?

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Нет !!!! Избегайте использования синглтона. Синглтон - это что-то вроде глобальной переменной в вашей системе. Обычно вы должны использовать синглтон в случае, если система не позволяет вам создать какой-либо ресурс более одного раза. Например, в Direct3D вы не можете создать среду Direct3D два раза, поэтому вы можете использовать синглтон, но в любом другом случае избегайте его использования.

0 голосов
/ 01 декабря 2011

Что я сделал, так это добавил статическое свойство к самому типу, чтобы получить доступ к хранилищу этого типа. Метод использует IoC для ее решения:

public class Book
{
    public static IBookRepository Repository { get { return IoC.Resolve<IBookRepository>(); } }
    ...
}

Тогда я могу звонить, как

Book myBook = Book.Repository.Find(id);

Мне это нравится, потому что он объединяет все элементы Book-y-ness и позволяет мне менять / вносить различные реализации в репозиторий для тестирования путем настройки IoC.

...