|
Локализованное использование производящих функций Одно из самых замечательных применений производящих функций - возможность изолирования кода, изменяемого при переносе программы на другой компьютер или среду. Открытый интерфейс, выраженный средствами базового класса, остается прежним, а в файле .cpp прячется специализированный производный класс с кодом, ориентированным на данную платформу. class Window { public: static Window* make(); // Далее следует гомоморфный интерфейс }; // В window.cpp для ОС Windows class MS_Window : public Window { ... }; Window* Window::make() { return MS_Window(); } // или в window.cpp для Mac OS class Mac_Window : public Window { ... }; Window* Window::make() { return Mac_Window*(); } Чтобы переключиться с одной платформы на другую, достаточно перекомпилировать и перекомпоновать файл .cpp. Все клиенты класса Window ничего не будут знать о произошедшей локализации (предполагается, что вы собираетесь создать действительно универсальное, гомоморфное представление окна в графическом интерфейсе - задача, перед которой дрогнет даже самый отчаянный проектировщик). |
Copyright 2005. Климов Александр. All Right Reserved.