жают их по-разному (то есть об

Автор admin Пятница, 19 июня 2009 11:32

жают их по-разному (то есть обладают разным интерфейсом). Адаптация этих форм выражения друг к другу позволяет быстро придти к готовому решению. 490 Глава 10 • Паттерны проектирования Допустим, имеется класс, генерирующий числа Фибоначчи: //: C10:FibonacciGenerator.h #ifndef FIBONACCIGENERAT0R_H #define FIBONACCIGENERATORJ class FibonacciGenerator { int n; int val[2]: public: FibonacciGeneratorO : n(0) { val[0] = val[l] = 0: } int operatorOO { int result = n > 2 ? val[0] + val[1] : n > 0 ? 1 : 0: ++n: val[0] = val[l]; val[1] = result: return result; } int count О { return n: } }: #endif // FIBONACCIGEN E RAT0R_H ///:- Как и всякий генератор, этот класс вызывается оператором (): //: СЮ:FibonacciGeneratorTest.срр #include #include “FibonacciGenerator.h” using namespace std: int mainO { FibonacciGenerator f: for(int i =0: i < 20: i++) cout « f.countO « “: ” « f() « endl: } ///:- Требуется использовать этот генератор совместно с числовыми алгоритмами STL. К сожалению, алгоритмы STL работают только с итераторами; возникает несоответствие интерфейсов. Проблема решается Адаптером, который получает


Комментарии закрыты.