С++ - язык, который изучается постепенно.Представители
                   Справочники Всё для создания сайта

Ссылки


Home
Бизнес
Справочники
Советы







Материалы книги получены с http://www.itlibitum.ru/

Представители

В книге «Advanced C++ Programming Styles and Idioms» Джеймс Коплин (James Coplien) выдвинул

особую разновидность объекта класса, который он назвал представителем (exemplar). Представитель - это объект класса, который является экземпляром представляемого им класса. Понятно? У меня от таких высказываний голова идет кругом.

class Exemplar {}; // Символический класс

class Foo {

private:

Foo(); // И все остальные конструкторы, кроме одного

public:

Foo(Exemplar); // Конструктор представителя

Foo* make(); // Производящие функции представителя

};

extern Foo* foo; // Сам представитель

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

С представителями можно делать все то же самое, что и с объектами класса. При этом необходимо учитывать следующее:

1.   Для представителей не нужно создавать отдельный класс Class.

2.   С представителями не приходится объявлять друзей (обычно объект класса должен быть другом того класса, который он представляет).

3.   Настоящие объекты классов заметно упрощают моделирование иерархий классов.

4.   Настоящие объекты классов упрощают создание гомоморфного интерфейса для описанных выше сведений о классах.

5.   С объектами классов отличия между тем, что относится к объектам класса/представителям, и тем, что относится к реальным экземплярам, становятся более отчетливыми.

В общем и целом, объекты классов оказываются более гибкими при незначительно усложнении реализации по-сравнению с экземплярами.


Назад    Содержание    Далее    

Home  Создание сайтов  Учебник по записи CD  Справочник Web дизайнера Самоучитель IE PHP и MySQL Компьютерные сети С++ E-mail me

Copyright 2007. Климов Александр. All Right Reserved.
Hosted by uCoz