Сущность технологии СОМ. Библиотека программиста   ::   Бокс Дональд

Страница: 500 из 528

Рассмотрим следующую простейшую иерархию типов для Java:

interface IDog {

public void Bark();

};

class Pug implements IDog {

public void Bark( ){…}

};

class Collie Implements IDog {

public void Bark( ){…}

};

Поскольку оба класса – Collie и Pug – совместимы с интерфейсом IDog , то клиенты могут написать групповой код следующим образом:

void BarkLikeADog(IDog dog) {

dog.Bark(); }

С точки зрения клиента, эта иерархия типов практически идентична предыдущему примеру на C++. В то же время, поскольку метод Bark интерфейса IDog не может иметь реализации, между определением интерфейса IDog и классами Pug или Collie не существует связи. Хотя из этого следует, что как Pug , так и Collie должны полностью определить свое собственное представление о том, что означает «лаять» ( bark ), конструкторы Pug и Collie не обязаны интересоваться, какие побочные эффекты окажут их производные классы на основной базовый тип IDog .

Поразительное подобие между первой и второй волной заключается в том, что каждая из них может быть охарактеризована с помощью простого понятия (класс и интерфейс, соответственно). В обоих случаях катализатором успеха послужило не само понятие. Для разжигания интереса со стороны индустрии программирования в целом потребовалась еще одна или несколько ключевых программных сред.

Интересной стороной систем второй волны является то, что реализация рассматривается как черный ящик. Это означает, что все детали реализации считаются непрозрачными ( opaque) для клиентов объекта.

|< Пред. 498 499 500 501 502 След. >|

Java книги

Контакты: [email protected]