2013-04-03 4 views
0

У меня есть класс на уровне доступа к данным, например BaseDAL, который имеет стандартные методы Insert, Update, Delete. Хорошо ли использовать один класс из уровня моей бизнес-логики для всех объектов в моем приложении или создать несколько классов DAL для всех объектов и использовать их для доступа к данным? Другими словами, что лучше? Несколько экземпляров одного и того же класса, обслуживающих множество клиентов или отдельных экземпляров отдельных классов, обслуживающих их соответствующие объекты?C# несколько объектов против нескольких классов

+1

если есть некоторые области, которые клиент не должны видеть, что лучше использовать другой класс. В этом случае вы можете использовать интерфейсы. – Dilshod

+0

Можете ли вы привести пример? На 100% не понятно, что вы спрашиваете, и я думаю, что пример сделает ваш реальный вопрос ясным. Например, возможно, у вас есть база данных животных, и у вас есть клиенты, которые имеют дело только с кошками. Это ваш вопрос? Вы могли бы также означать, что у вас есть тот же животный дБ, и у вас есть клиент, который имеет дело только с животным по имени Джордж. – Hogan

ответ

1

Зависит от того, как часто вам нужно менять сущности, насколько вам нужна гибкость и насколько быстро вам нужно писать код.

Лучшие практики говорят, что вы должны создать отдельный класс сущности для каждого слоя (DAL, BL, слой Presentation). И это приведет к самой гибкой архитектуре.

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

Я часто использую общий базовый интерфейс со всеми общедоступными свойствами для таких сущностных классов всех слоев (обычно у меня есть 3 класса сущностей: для DAL, BL, PL отдельно) и пишите для них один класс конвертера. Он по-прежнему обладает достаточной гибкостью при необходимости, но позволяет писать меньше кода.

Извините, я сначала не понял вопрос. Вот обновление

Что касается классов репозитория доступа к данным, то, конечно же, лучше разделить функциональность на части (возможно, на основе типа сущности). В противном случае вы скоро получите файл сотен тысяч строк.

А также есть принцип дизайна «Принцип единой ответственности». По его словам, лучше разделить функциональность. Хотя можно считать, что все методы доступа к данным имеют одинаковую ответственность на высшем уровне, они выполняют очень разные действия и работают с разными объектами.

+0

Я ничего не видел в вопросе о слоях. Как это соотносится? – Hogan

+0

Извините, я неправильно понял вопрос. Отредактировано сейчас. –

0

Что-то вроде этого:

public interface IPerson 
{ 
    string Name{get;set;} 
    string LastName{get;set;} 
    //do not add fields which client doesn't need 
} 

public class PersonServerSide : IPerson 
{ 
    //implement IPerson 
    public string SSN{get;set;} //client doesn't need this for example 
} 

public class PersonClientSide : IPerson 
{ 
    //implement IPerson 
} 
+0

Этот ответ, похоже, не имеет никакого отношения к вопросу, не могли бы вы объяснить, как это связано? – Hogan

+0

@ Хоган это просто пример того, как он мог реализовать свой проект. – Dilshod

Смежные вопросы