У меня есть сетевая часть, некоторая бизнес-логика и классы просмотра, логически разделенные на группы.Я хочу расположить их в модульном стиле таким образом, чтобы сетевая часть впоследствии могла быть заменена другим сетевым модулем.Я не разбираюсь в этих понятиях (инкапсуляция и т. Д.), Поэтому в настоящее время я стараюсь хранить ссылки на связанные классы внутри группы и никогда не ссылаться на них вне этой группы.
Проект выполняется на Какао.Сетевая часть использует Bonjour и будет публиковать сервис (самостоятельно) и искать аналогичные сервисы.Полученный массив нужно будет отправить в табличное представление, чтобы пользователи могли выбрать желаемую службу для подключения.В настоящее время это достигается с делегацией.
Моя иерархия классов, сетевая группа:
NetController // Entrance to the networking group
Socket // Create a socket for service (self)
Bonjour // Bonjour manager
BonjourPublish // Publish a service on the network
BonjourBrowse // Browse for other services on the network
Проблема в том, что для делегирования для работы я должен установить ссылку на класс, который будет выполнять делегирование в представлении, чтополучить массив служб:
[[[netController bonjour] serviceBrowser] setDelegate:self];
Я хочу, чтобы класс NetController был точкой входа для группы классов сети, но этот вызов идет гораздо глубже в иерархию.Преимущество делегирования заключается в том, что оно допускает слабую связь между классами, но я должен признать, что не вижу эффекта от этого преимущества.
Как лучше всего справляться с такими проблемами?
Обычно мне нужны хорошие ресурсы по модульному программированию.Я нахожу эти концепции очень интересными и актуальными.Есть ли у кого-нибудь рекомендации по книгам или веб-ресурсам, связанным с этим.
Ваша помощь очень ценится!