这种设计模式是什么?

时间:2017-08-01 21:44:45

标签: c++ oop design-patterns

假设我们的代码过于简单:

class A{
public:
    template<typename T1, typename T2>
    void work(T1 a, T2 b){
        do_something1(a, b);
        do_something2(a, b);
        do_something3(a, b);
    }

private:
    template<typename T1, typename T2>
    void do_something1(T1 a, T2 b);

    template<typename T1, typename T2>
    void do_something2(T1 a, T2 b);

    template<typename T1, typename T2>
    void do_something3(T1 a, T2 b);
};

所有函数do_somethingXX都有相同或相似的模板参数,并且可能内部有一些样板代码。

但是,如果你像这样重构:

class A{
public:
    template<typename T1, typename T2>
    void work(T1 a, T2 b){
        A_Processor<T1, T2> processor(a, b);

        processor();
    }
};

template<typename T1, typename T2>
class A_Processor{
public:
    A_Processor(T1 &a, T2 &b) : a(a), b(b){}

    operator()(){
        do_something1();
        do_something2();
        do_something3();
    }

private:
    void do_something1();
    void do_something2();
    void do_something3();

private:
    T1 &a;
    T2 &b;
};

代码很清晰,样板消失了。编译器也会优化A_Processor,因此A_Processor是零成本抽象。

可以在不使用模板的情况下给出相同的示例。

这种设计模式吗?

第二个问题,如果A是等级A什么&#34;事情&#34; A_Processor代表什么?

0 个答案:

没有答案