【发布时间】:2015-05-18 15:41:17
【问题描述】:
假设您有两个函数fun1 和fun2。有两个类der1 和der2。 der1 和 der2 都实现了 fun1,但只有 der2 实现了 fun2。但是我需要使用指向der1 和der2 的base 指针来进行多态行为。即使只有der2 会同时使用这两个函数,在基类(抽象)中同时拥有这两个函数是否有意义?
der1 和der2 是相关的,我认为der2 应该包含der1。但即便如此,基类也需要声明fun1 和fun2。如何实现ISP?下面的代码看起来不错还是有办法以更好的方式对其进行重组?
class base // Abstract
{
public:
virtual void fun1() {//default implementation}
void fun2(){ // used by only der2}
};
class der1 : public base
{
//this also have fun2 as its defined in base.
}
class der2 : public base
{
// should implement fun1 and fun2 both
public:
void fun2() { //implements fun2.}
}
【问题讨论】: