У меня есть класс на уровне доступа к данным, например BaseDAL, который имеет стандартные методы Insert, Update, Delete. Хорошо ли использовать один класс из уровня моей бизнес-логики для всех объектов в моем приложении или создать несколько классов DAL для всех объектов и использовать их для доступа к данным? Другими словами, что лучше? Несколько экземпляров одного и того же класса, обслуживающих множество клиентов или отдельных экземпляров отдельных классов, обслуживающих их соответствующие объекты?C# несколько объектов против нескольких классов
ответ
Зависит от того, как часто вам нужно менять сущности, насколько вам нужна гибкость и насколько быстро вам нужно писать код.
Лучшие практики говорят, что вы должны создать отдельный класс сущности для каждого слоя (DAL, BL, слой Presentation). И это приведет к самой гибкой архитектуре.
Но недостатком такого решения является то, что вам нужно написать много методов конвертера, производительность часто падает немного, а самое главное - если вы делаете вертикальное изменение (которое влияет на все слои) - вам нужно изменить много кода. Поэтому, если ваше приложение одноразовое, и вы знаете, что оно будет жить не более нескольких недель/месяцев, может быть оправдано не создавать столько гибкости в пользу создания приложения быстрее. Но я еще раз подчеркиваю это - только для коротких живых маленьких приложений.
Я часто использую общий базовый интерфейс со всеми общедоступными свойствами для таких сущностных классов всех слоев (обычно у меня есть 3 класса сущностей: для DAL, BL, PL отдельно) и пишите для них один класс конвертера. Он по-прежнему обладает достаточной гибкостью при необходимости, но позволяет писать меньше кода.
Извините, я сначала не понял вопрос. Вот обновление
Что касается классов репозитория доступа к данным, то, конечно же, лучше разделить функциональность на части (возможно, на основе типа сущности). В противном случае вы скоро получите файл сотен тысяч строк.
А также есть принцип дизайна «Принцип единой ответственности». По его словам, лучше разделить функциональность. Хотя можно считать, что все методы доступа к данным имеют одинаковую ответственность на высшем уровне, они выполняют очень разные действия и работают с разными объектами.
Я ничего не видел в вопросе о слоях. Как это соотносится? – Hogan
Извините, я неправильно понял вопрос. Отредактировано сейчас. –
Что-то вроде этого:
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
}
- 1. C++ - функторы против классов
- 2. Структуры против объектов C++
- 3. assertIsInstance() против нескольких имен классов
- 4. Несколько классов в нескольких файлах - C++/Arduino
- 5. Один класс/несколько конструкторов против нескольких классов (наследование)
- 6. Класс против иерархии объектов
- 7. Linq через несколько классов объектов
- 8. Анализировать комплекс JSON: несколько петель против классов
- 9. Структуры против классов в C++
- 10. Несколько потоков против нескольких процессов
- 11. Предоставление нескольких классов/объектов через React.js?
- 12. Запуск нескольких экземпляров Solr против классов
- 13. Дизайн для нескольких классов, которые реализуют несколько классов
- 14. Передача объектов через несколько вложенных классов
- 15. Один «сжатый» файл классов против нескольких файлов классов в PHP
- 16. C# Несколько базовых классов
- 17. Несколько запросов GET против одного GET, который возвращает несколько объектов
- 18. Java- Вовлечение объектов и нескольких классов
- 19. Команды действий против классов действий?
- 20. Список нескольких объектов C++
- 21. несколько объектов против Изменения одного объекта
- 22. Интерфейс C# для нескольких классов
- 23. Возвращение нескольких классов в C#
- 24. Интерфейсы против абстрактных классов
- 25. C++ Освещение несколько объектов
- 26. Несколько объектов передачи данных для нескольких слоев
- 27. Объединение нескольких объектов в несколько форматов
- 28. C++: шаблон класса против двух классов: эффективность
- 29. Несколько файлов схемы XSD для классов C#
- 30. Box2D несколько приборов против нескольких тел
если есть некоторые области, которые клиент не должны видеть, что лучше использовать другой класс. В этом случае вы можете использовать интерфейсы. – Dilshod
Можете ли вы привести пример? На 100% не понятно, что вы спрашиваете, и я думаю, что пример сделает ваш реальный вопрос ясным. Например, возможно, у вас есть база данных животных, и у вас есть клиенты, которые имеют дело только с кошками. Это ваш вопрос? Вы могли бы также означать, что у вас есть тот же животный дБ, и у вас есть клиент, который имеет дело только с животным по имени Джордж. – Hogan