#c #com
#c #com
Вопрос:
Я собираюсь разработать COM-компонент для устройства WIN CE. Существуют ли какие-либо ограничения на количество методов, которые могут быть добавлены к COM-интерфейсу (компоненту)?
Комментарии:
1. Задавая это вообще, звучит так, как будто ваш дизайн, вероятно, по крайней мере, несколько сомнителен.
Ответ №1:
Одним из преимуществ интерфейса является то, что несколько классов могут повторно использовать ваш интерфейс. Это позволило бы программам использовать одни и те же методы в разных классах, не заботясь о том, что они собой представляют.
Одна из целей COM — скрыть реализацию класса, к которому вы обращаетесь. Предполагается, что пользователь не должен знать, учитывая интерфейс, что именно находится за этим интерфейсом.
Представьте, что у вас есть стул, теперь представьте, что у вас есть велосипед. Оба могут использовать интерфейс ISeat. Пользователь может сидеть на любом объекте, не зная, на каком пользователь сидел. Теперь bike может использовать интерфейс IPedal, а chair не будет использовать этот интерфейс. Теперь chair не обязательно должен иметь все методы, которые реализует bike (например, PedalForward).
Если бы chair пришлось реализовывать эти методы, потому что у вас только один интерфейс, вам пришлось бы что-то делать с этими методами. Вы могли бы заставить метод ничего не делать, но это было бы бесполезно для пользователя и, возможно, опасно, поскольку пользователь мог бы пытаться отодвинуть кресло от машины, чтобы его не сбила машина. Или вы могли бы создать исключение. Что было бы странно, поскольку пользователь задался бы вопросом, почему объект не может переключаться вперед.
Итак, если у вас слишком много методов в одном интерфейсе, если не учитывать наличие god-класса, вы не используете преимущества COM так, как это было задумано.
Ответ №2:
Нет.
Но если вам нужно добавить много методов в один класс, есть очень большая вероятность, что ваш дизайн нарушен.
Кроме того, имейте в виду, что после публикации COM-интерфейса вы никогда не «должны» его изменять.