Я много читал о IoC и компонентном проектировании. Однако я немного не уверен в том, как лучше спроектировать мои интерфейсы.
Я не уверен, насколько грубыми или мелкими они должны быть. Рассмотрим компонент Отправка в качестве примера:
- Компонент отгрузки может быть настроен с некоторыми настройками
- Пользователь может добавлять и удалять товары из партии
- Пользователь может выполнять некоторые функции в отношении груза, которые изменяют его состояние, например, Готов к отправке, авторизации, отправке, счету и т. Д.
Простейший интерфейс для этого модуля может быть следующим (псевдокод):
public interface IShipment
{
AddItem(Item);
RemoveItem(Item);
ReadyForShipment();
Authorise();
Despatch();
Invoice();
}
Однако я не уверен, что это действительно правильный интерфейс. Может быть, мы должны отделить их:
public interface IShipmentContents
{
AddItem(Item);
RemoveItem(Item);
}
public interface IShipmentActions
{
ReadyForShipment();
Authorise();
Despatch();
Invoice();
}
Или мы можем довести его до крайности, когда каждое из действий становится интерфейсом и, таким образом, мы можем внедрять конкретные реализации
каждое действие вместо группы из них.
Может ли кто-нибудь указать мне некоторые материалы для чтения, чтобы помочь мне понять применение IoC и CBD в реальном приложении?