Шаблон проектирования для контроллера аппаратного устройства - PullRequest
3 голосов
/ 08 сентября 2011

Я надеюсь, что это подходит для SO.

Учитывая два класса: ClassA является основным объектом контроллера для приложения.ClassB контролирует аппаратное устройство (по сети, USB, последовательный порт, что-то).ClassA создает объект ClassB и использует его для отправки / получения данных от аппаратного устройства.

Когда пользователь хочет закрыть приложение, ClassA отправляет сообщение «shutdown» в ClassB.В некоторых случаях ClassB требуется длительный период времени для завершения выключения.Может быть, он должен сбросить оборудование в известное состояние или дождаться завершения выполняемой операции.

Каков наилучший шаблон проектирования для связи между ClassA и ClassB для минимизации связи?Обратный вызов (метод или блок) в сообщении выключения?Протокол делегирования с определенным методом shutdownComplete?Что-то еще?

Кроме того, ClassB действительно является «абстрактным» суперклассом, потому что есть несколько аппаратных устройств, поэтому для каждого из них есть подкласс B.Я не думаю, что это повлияет на дизайн.

Спасибо!

1 Ответ

2 голосов
/ 08 сентября 2011

Я бы использовал обратный вызов блока:

- (void) initiateShutdownWithCompletionHandler: (dispatch_block_t) callback;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...