Вот фон на ручках в целом:
http://www.anvir.com/handle.htm
Дескрипторы - это непрозрачные ссылки на ресурсы (т. Е. Расположение в памяти), и только подсистема, предоставившая вам дескриптор, знает, как дескриптор связан с физическим указателем. Это не значение, не указатель и не ссылка, это просто псевдоним ресурса, который вы используете с API, который знает, что с ним делать.
Так что книга пытается сказать, что когда у вас есть класс, который управляет каким-то ресурсом, вы, якобы, добавляете слой абстракции. Однако если вы дадите дескриптор ресурса, вы на самом деле не абстрагируетесь от реализации, поскольку ваша абстракция может быть легко обойдена.
Требование иметь дескрипторы и функции, которые принимают дескрипторы в качестве параметров для выполнения определенной задачи, в основном диктуется процедурными языками, такими как C, которые не имеют объектов и, следовательно, не могут скрыть определенный ресурс внутри класса и предоставляют вам только методы работать на этом ресурсе.
Примером этого может служить библиотека Microsoft MFC C ++, в которой класс CWnd
имеет метод доступа, который возвращает HWND
окна (т. Е. Дескриптор):
http://msdn.microsoft.com/en-us/library/d64ehwhz(VS.71).aspx