基于Policy和基于traits都是一样的,只是感觉Policy倾向于行为提取,traits倾向于类型提取。好像还有一种名词:Aspect-oriented programming,不过感觉都有相同的意义。
举个实例:计算加减乘除,常规方法是定义一个抽像计算的基类,然后派生出各种具体计算类…就不多说了。
下面使用Policy方法,实现一把:
#include<iostream>
template<typename T>
class Add
{
public:
typedef T valueType;
static T calc(const T& a, const T& b)
{
return a + b;
}
};
template<typename T>
class Sub
{