2015-06-30 4 views
0

Если у меня есть класс, определяемый как:класса Дизайн и Коллекции

public class Car{ 
    public int doors {get;set} 
    public int wheels {get;set} 
    public string make {get;set} 
    public string model {get;set} 

    public Car(){} 
} 

И я хочу, чтобы создать коллекцию этого класса. В прошлом я понял, что было приемлемо создать коллекционный класс:

public class CarCollection{}; 

Это вернет коллекцию автомобилей.

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

Мой вопрос в том, куда должен идти этот код, и какое определение должно иметь этот метод? Например я должен просто добавить публичный метод в мой класс автомобиля:

public List<Car> GetAllCars() 
{ 
    ... 
} 

Если да, то это кажется странным, чтобы создать экземпляр класса автомобилей, чтобы получить коллекцию автомобилей, но я знаю, объявив его в качестве общего класса ISN» t правильный вариант. Как мы должны разрабатывать наши коллекции классов и где мы должны их включать?

+0

Определите «Список », где вы должны его использовать, например, вы можете определить его в методе 'Main' * (для консольного приложения) *, и если вам нужно поделиться им, вы можете поделиться этим« списком » – Habib

+0

Мне нужно заполнить список автомобилей из базы данных, поэтому определение его, где оно используется, не похоже на правильный ответ. Должен ли я создать отдельный класс доступа к данным, который определяет List и заполняет его? – TreK

+0

Да, вы можете это сделать, верните «Список » из вашего метода, ответственного за доступ к БД и получение записей. – Habib

ответ

1

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

Таким образом, у вас был бы Car класс в качестве модели, а также репозиторий, например: CarRepository. У этого репозитория будет метод для возврата списка всех ваших автомобилей. Вся логика заполнения этого списка будет в этом классе и не загрязнит другие места приложения и не повысит ремонтопригодность кода.

public class CarRepository { 
    public List<Car> GetAllCars() {   
     // read data from DB and return list   
    } 

    public Car GetSingle(int carId) { 
     // here you just return single car 
    } 
    } 

Это просто, чтобы дать вам представление о том, как это можно сделать. В дальнейшем вы можете расширить эту концепцию, внедряя интерфейсы для простого тестирования и замены реализаций для репозитория. Тогда у вас может быть один интерфейс, с несколькими реализациями - один для чтения из БД и, например, второй для чтения из файла XML.

В Интернете есть много материалов для чтения.

+0

Спасибо @jjczopek. Я искал хороший материал для чтения. Какие условия поиска я должен использовать, чтобы найти этот материал. Я не смог найти какой-либо качественный материал. – TreK

+0

Попробуйте это: http://www.codeproject.com/Articles/631668/Learning-MVC-Part-Repository-Pattern-in-MVC-App это относится к MVC, однако концепция не ограничивается MVC и веб-сайтом приложений, но их можно использовать повсюду. – jjczopek

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