设计模式:超越传统认知的编程智慧
1. 设计模式不限于面向对象编程和动态多态
设计模式并非局限于面向对象编程。以圆的绘制为例,除了使用基类进行抽象,还能依靠模板参数。
template< typename DrawStrategy >
class Circle
{
public:
void draw( /*...*/ );
};
在这种形式下,如何绘制圆的决策在编译时就已确定。通过 DrawStrategy 模板参数提供绘制的实现细节,而非在运行时传递基类指针。这样, Circle 类与所使用的图形库解耦,同时也体现了策略设计模式的意图。
再看标准库中的 std::accumulate() 函数模板:
std::vector<int> v{ 1, 2, 3, 4, 5 };
const auto sum = std::accumulate( begin(v), end(v), int{} );
默认情况下, std::accumulate() 对给定范围内的所有元素求和。若需要,可通过提供第四个参数指定元素的累积方式,例如使用 <functional> 头文件中的 std::plus 或 std::multiplies : <
超级会员免费看
订阅专栏 解锁全文
663

被折叠的 条评论
为什么被折叠?



