如何将类与其不同的实现分开

时间:2012-10-25 07:21:39

标签: c++ design-patterns architecture

我有一个带有显式类模板特化的类模板和另一个部分类模板特化。

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
};

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

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

注意:此问题与How can we implement the Builder design pattern using boost::mpl?

有关

1 个答案:

答案 0 :(得分:0)

您还可以使用state pattern(适用于不同的内部表示),但这取决于您在项目中需要什么。状态模式允许您使用相同的对象,但如果您需要不同的对象,您还可以使用factory method