Joe*_*der 3 c++ dry base-class
创建C++继承结构时,必须在多个位置定义完全相同的成员函数:
如果B是一个抽象基类,并且D,E和F都从B继承,那么你可能有:
class B
{
virtual func A( ... params ) = 0;
};
class D : public B
{
func A( ... params );
};
/* ... etc... similar implementations for E and F */
Run Code Online (Sandbox Code Playgroud)
所以,这里显然有一些重复.如果B的接口很大,如果接口需要更改,则可能有许多地方需要更改.
一位同事用嵌入式巧妙创造的#includes,ala提出了一些诡计:
class D: public B
{
#include "B_Interface.h" // B_Interface.h is a specially crafted .h file
}
Run Code Online (Sandbox Code Playgroud)
这看起来有点笨拙?是吗?有没有更好的解决方案来避免双重维护?
此外,这里的解决方案可能是支持语言的更好工具,例如Visual Assist X?
编辑:假设派生类必须具有唯一的实现.
sbi*_*sbi 12
实际上,更改界面的最大问题通常是使用它的所有代码,而不是实现它的代码.如果为实施者更改它很容易,那么可能会让用户的生活更加艰难.
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |