Ограничение методов интерфейса COM - PullRequest
1 голос
/ 27 мая 2011

Я собираюсь разработать COM-компонент для устройства WIN CE. Существуют ли какие-либо ограничения на количество методов, которые могут быть добавлены в COM-интерфейс (компонент)?

Ответы [ 2 ]

4 голосов
/ 27 мая 2011

Одним из преимуществ интерфейса является то, что несколько классов могут повторно использовать ваш интерфейс.Это позволило бы программам использовать одни и те же методы в разных классах, не обращая внимания на то, что они собой представляют.

Одна из целей COM - скрыть реализацию класса, к которому вы обращаетесь.Пользователь не должен знать, учитывая интерфейс, что именно стоит за этим интерфейсом.

Представьте, что у вас есть кресло, а теперь представьте, что у вас есть велосипед.Оба могут использовать интерфейс ISeat.Пользователь может сидеть на любом объекте, не зная, на котором он сидел.Теперь велосипед может использовать интерфейс IPedal, и кресло не будет использовать этот интерфейс.Теперь кресло не должно иметь всех методов, которые реализует велосипед (например, PedalForward).

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

Так что, если у вас слишком много методов в одном интерфейсе, кроме присутствия божественного класса, вы не пользуетесь преимуществом.COM в том виде, в котором он предназначен для использования.

3 голосов
/ 27 мая 2011

номер

Но если вам нужно добавить много методов в один класс, очень вероятно, что ваш дизайн не работает.

Кроме того, имейте в виду, что после публикации COM-интерфейса вы никогда не «должны» его менять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...