Class Design, какой из них лучше всего подходит для этого?

Я новичок в архитектурном дизайне и мне нужна помощь в этом.

У меня есть два класса, а именно «Часть» и «Поставщик». Часть будет иметь поставщика.

В моем дизайне класса должен ли я иметь «int SupplierID» (тип «int») или «Поставщик-поставщик» (тип «Поставщик») в качестве свойства в классе Part?

Какой из них лучше? Каковы их плюсы и минусы?

Пожалуйста, предоставьте свой вклад в это.


person Dhanapal    schedule 18.01.2011    source источник


Ответы (1)


Supplier supplier 

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

Настоящее преимущество наличия Поставщика в качестве типа связано с тем, что вы сможете использовать внедрение зависимостей для назначения Поставщика Части при создании экземпляра Части. Итак, ваш конструктор для Part должен выглядеть так:

Part(Supplier supplier)
{
   _supplier = supplier;
}

Теперь ваш класс Part не зависит от изменений в вашем классе Supplier. т.е. это не зависит от него.

Примечание. Если вы не знакомы с внедрением зависимостей, эта статья от Мартина Фаулера должна объяснить:

http://martinfowler.com/articles/injection.html

person Robben_Ford_Fan_boy    schedule 18.01.2011
comment
@ Дхана: нет проблем. Кстати, я нашел эту книгу amazon.com/Agile-Principles- Patterns-Practices-C/dp/0131857258 действительно помогли мне с такими вопросами. Кроме того, стоит прочитать онлайн-статьи Роберта Мартина о принципах SOLID. - person Robben_Ford_Fan_boy; 18.01.2011