2

我有一个具有显式类模板专业化和另一个部分类模板专业化的类模板。

template< typename T1, typename T2 >
class A{
    internal_representation1 inRep;
    // methods
};

template<>
class A < specific_type_1,specific_type_2 >{
     //internal represenation different for this type.
    internal_representation2 inRep;
    // methods
};

template< template T1 >
class A < T1,specific_type_2 >{
     //internal represenation different for this type.
    internal_representation3 inRep;
    // methods
};

专业化导致接口重复。类模板及其特化都具有相同的方法名称,但它们的实现不同。具体来说,它们的内部数据结构的表示。

我应该用桥接设计模式替换上述实现吗?

注意:这个问题与我们如何使用 boost::mpl 实现构建器设计模式有关?

4

1 回答 1

0

您也可以使用状态模式(适用于不同的内部表示),但这取决于您在项目中需要什么。状态模式允许你使用同一个对象,但是如果你需要不同的对象,你也可以使用工厂方法

于 2012-10-25T07:32:43.810 回答