参数化类,参数化类使用的技术是模板(在C++中,STL的容器就是一个典型例子)就是把某些结果只与类型相关,而与过程无关的东西放在一起。如
a=a+b , 如果定义了两个类,Intger Float,
struct Int{
int i;
};
struct Float{
int i;
};
这时要定义这两个类的Add,如果使用普通方法的话需要写两份代码,一份是
Int Add(const Int&a, const Int& B){
Int c;
c.i = a.i+b.i;
return c;
}
同样还要定义一个参数是Float类型的同样代码的函数,是不是觉得有点累,而且以后还要维护两套同样的代码(如果BOSS是靠代码行类计算的话
那可以放心这样写)
使用模板就不必这么麻烦了。你可以定义如下
template <class T>;
T Add(const T&a,const T&b)
{
T c;
c.i=a.i|b.i;
return c;
}
OK
三种方法比较
从代码编写上来说,继承是最快的,如果你不想实现某个类的所有接口,那只要从它继承就可以了。但是破坏了封状性,修改父类就会影响子类,维护性不是很好。并且是编译时就指定,无法运行时改变功能。(如if
a then b这样)
组合是使用一组对象来实现一个功能。性能方面比不上继承,但是修改一个类不会影响其它类,另外可以运行时指定(你可以在运行时指定由哪个对象来处理)。另外由于需要运行时才指定对象,所以有低效性问题(如果想完全高效那当然是使用C或是ASM了
所以这方面不用担心)
参数化类型(也就是模板)是定义一组除了类型外其它没有什么不同的操作的好方法,无论是维护还是开发上都不错。