Сделать все методы DAL статичными

1

В моем приложении формы выигрыша у меня есть один класс службы, называемый DataServices который предоставляет услуги доступа к базе данных для всех других классов клиентов (около 12 классов), когда дело касается операций CRUD. (я использую ADO.net). У этого класса много общественных методов. Ниже приведена часть интерфейса, реализованного этим классом.

interface IDataService
    {
        BankAccount GetByACNo(string acNo);
        bool InsertAccount(IBankAccount ba);
        bool UpdateAccount(IBankAccount ba);

        bool InsertClient(IClient newClient);
        Client GetClientByCID(int CID);
        Client GetClientByName(string clientName);
        void UpdateClient(IClient changedClient);
        DataTable LoadClientNamesAndCID();

        DataTable LoadPointNamesAndPID();
        bool InsertPoint(IPoint newPoint);
        Point GetPointByPID(string id);
        bool UpdatePoint(IPoint point);
        Point GetPointByName(string id);
        List<string> GetPIDs(string firstLetterOfPointName);

        // other methods...
    }

Поскольку эти методы не используют какие-либо переменные экземпляра, лучше ли все методы static?

Теги:
ado.net
static
data-access-layer

1 ответ

1
Лучший ответ

С MSDN http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

"Статические классы и члены класса используются для создания данных и функций, к которым можно получить доступ, не создавая экземпляр класса. Статические члены класса могут использоваться для разделения данных и поведения, не зависящих от любого идентификатора объекта: данные и функции не независимо от того, что происходит с объектом. Статические классы могут использоваться, когда в классе нет данных или поведения, которые зависят от идентичности объекта ".

Вопросов

1) Ну, это зависит от того, как вы действительно называете свои методы, вы можете использовать статические методы, если у вас нет причин создавать экземпляр класса. В этом подходе нет ничего плохого.

2) Не проблема, если статические методы установлены правильно. Каждый пользователь, статический или нет, будет иметь одинаковое влияние на базовый источник данных (XML, DB и т.д.),

Там разница в общем дизайне, хотя - статические методы должны почти всегда быть потокобезопасными (т.е. Вы должны сделать их потокобезопасными), в то время как методы экземпляров обычно не должны быть (хотя вы должны документировать свою безопасность потоков классов).

надеюсь это поможет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню