C++编程思想(卷二):设计模式:适配器模式
2009-12-11 11:07
323 查看
适配器模式:
接受一种类型并且提供一个对其他类型的接口。
以斐波那契数列发生器为例:
接受一种类型并且提供一个对其他类型的接口。
以斐波那契数列发生器为例:
头文件: #ifndef FIBONACCIGENERATOR_H #define FIBONACCIGENERATOR_H class FibonacciGenerator { int n; int val[2]; public: FibonacciGenerator() : n(0) { val[0] = val[1] = 0; } int operator()() { int result = n > 2 ? val[0] + val[1] : n > 0 ? 1 : 0; ++n; val[0] = val[1]; val[1] = result; return result; } int count() { return n; } }; #endif 实现文件: #include <iostream> #include <numeric> #include "FibonacciGenerator.h" #include "../C06/PrintSequence.h" using namespace std; class FibonacciAdapter { // Produce an iterator FibonacciGenerator f; int length; public: FibonacciAdapter(int size) : length(size) {} class iterator; friend class iterator; class iterator : public std::iterator< std::input_iterator_tag, FibonacciAdapter, ptrdiff_t> { FibonacciAdapter& ap; public: typedef int value_type; iterator(FibonacciAdapter& a) : ap(a) {} bool operator==(const iterator&) const { return ap.f.count() == ap.length; } bool operator!=(const iterator& x) const { return !(*this == x); } int operator*() const { return ap.f(); } iterator& operator++() { return *this; } iterator operator++(int) { return *this; } }; iterator begin() { return iterator(*this); } iterator end() { return iterator(*this); } }; int main() { const int SZ = 20; FibonacciAdapter a1(SZ); cout << "accumulate: " << accumulate(a1.begin(), a1.end(), 0) << endl; FibonacciAdapter a2(SZ), a3(SZ); cout << "inner product: " << inner_product(a2.begin(), a2.end(), a3.begin(), 0) << endl; FibonacciAdapter a4(SZ); int r1[SZ] = {0}; int* end = partial_sum(a4.begin(), a4.end(), r1); print(r1, end, "partial_sum", " "); FibonacciAdapter a5(SZ); int r2[SZ] = {0}; end = adjacent_difference(a5.begin(), a5.end(), r2); print(r2, end, "adjacent_difference", " "); }
相关文章推荐
- C++编程思想(卷二):设计模式:代理模式
- Java编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
- C++编程思想(卷二):设计模式:状态模式
- C++编程思想(卷二):设计模式:模板方法模式
- C++编程思想(卷二):设计模式:策略模式
- C++编程思想(卷二):设计模式:职责链模式
- C++编程思想(卷二):设计模式(序)
- C++编程思想(卷二):设计模式:单件
- C++编程思想(卷二):设计模式:命令模式
- 汤姆大叔设计模式学习体会:设计模式的思想
- 设计模式笔记(十二) —— 适配器模式
- 设计模式基础——适配器模式
- C++设计模式之适配器模式
- Java中利用反射的思想解决工厂设计模式的耦合问题
- 设计模式之适配器模式(Adapter Class/Object)
- 14.设计模式、单例模式、适配器模式
- 设计模式—ADAPTER 适配器模式
- Java设计模式之适配器模式
- java_设计模式_适配器模式_Adapter Pattern(2016-08-09)
- 设计模式- 适配器模式