http://en.wikipedia.org/wiki/Policy-based_design(第一分代码的来源)
这本书以前看过,是关于template 很好的书,关于policy-based wiki 用继承实现:
列出了3个方法,还有很多衍生版本,总结如下:
通过继承,与static 有同样的使用接口
继承:对代码改动最小:using ..., 适用于对代码已经写好,但用于追加功能,修改功能的时候
static: 代码改动较继承大,需要在每个修改的地方都加上类名,适用于:代码设计阶段。优点是代码清晰明了(相对其它,最清晰)
指针构造:功能最完善,适用于极其复杂的功能设计。扩展性强。缺点是,代码改动大,只能在代码设计阶段使用。
#include "inheritance.h"
#include "static.h"
#include "pointer.h"
int main()
{
AAA::inheritance_t();
BBB::static_t();
CCC::pointer_t();
}
1.通过继承
#pragma once
#include <iostream>
#include <string>
namespace AAA{
template <typename OutputPolicy, typename LanguagePolicy>
class HelloWorld : private OutputPolicy, private LanguagePolicy
{
using OutputPolicy::print;
using LanguagePolicy::message;
public:
void run() const