用C++ 模板做代码设计的三类方法及代码——基于策略Policy-based design

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值