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
{
print(message());
}
};
class OutputPolicyWriteToCout
{
pr

本文介绍了C++中基于策略的Policy-based设计的三种方法:通过继承、通过静态成员函数和通过构造函数指针。继承方法适用于已有代码的微调,改动小;静态成员函数在设计初期可提供清晰的代码结构;构造函数指针则适用于处理复杂功能,但可能需要大量代码改动。
最低0.47元/天 解锁文章
418

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



