看不懂这样的类设计
在研究别人写的代码时,发现这样一种类设计。
一个基类,如Node。从Node类派生出两个子类Element和Document,但这两个类没有任何数据成员,只有一些方法。程序里可以直接把Node指针类型强制转换成Element或Document指针。
以前没有看到过这样的设计,觉得很奇怪。印象里标准的hiberarchy类结构也不是这样的。请大家帮助分析一下这样做的目的。
[解决办法]
如果有这样的需要,
还不如在基类node中声明有些 虚函数,不需要实现,
然后的两个派生类中,根据实际特性重写这些虚函数。
然后在程序中可以使用基类指针访问到正确的函数方法 ...
通过类型的强制转化并不太安全 。
[解决办法]
可能是基类node实现的太复杂了,接口函数耦合度太高,不易分开,于是用这个方法来区分两类不同的概念。虚函数的实现会损失效率。
[解决办法]
主要是出于效率和使用方便,和void*差不多。如果这样的Node能够约束在一个设计的内部和局部,那也不是什么坏事。
[解决办法]
就起一个void *的效果。基本上,不称为好设计,可用而已。