RTRTRT
书上说的太虚了:要先考虑组合,后考虑继承,求大神一语道破,传我瞬间判断神功。
例如:
现有一个接口
inter A {
func();
}类B ,类C继承A接口 ,且各有一个自己的方法:
class B implement A {
func(){};
funcB(){};
} 不是抽象类class C implement A {
func(){};
funcC(){};
} 不是抽象类现类D 要同时具有 func(),funcA(),func()B三个方法,该使用继承还是组合???
(1)class D inter B inter C{
}
(2)class D {
B *b;
C *c;
}
哪个好,在代码的扩展与维护方面?再次求大神传秘笈,怎样快速有效的判断出何时用组合,何时用继承。问题竟然不能同时发两个板块 郁闷继承 设计模式
书上说的太虚了:要先考虑组合,后考虑继承,求大神一语道破,传我瞬间判断神功。
例如:
现有一个接口
inter A {
func();
}类B ,类C继承A接口 ,且各有一个自己的方法:
class B implement A {
func(){};
funcB(){};
} 不是抽象类class C implement A {
func(){};
funcC(){};
} 不是抽象类现类D 要同时具有 func(),funcA(),func()B三个方法,该使用继承还是组合???
(1)class D inter B inter C{
}
(2)class D {
B *b;
C *c;
}
哪个好,在代码的扩展与维护方面?再次求大神传秘笈,怎样快速有效的判断出何时用组合,何时用继承。问题竟然不能同时发两个板块 郁闷继承 设计模式
实例化B,C,可以具体的知道该调用类内哪个方法,并且不出现冲突。
class D inter B inter C{
}
这个写法本身就是错的,这种情况只能用组合组合比继承好的原因是 组合的耦合性更低
class D implement A {
B b;
C c;
func();//根据实际需要调用b或c的func(),也可以自己写
}
class D {
public void funcOfA() { a.func();}
public void funcOfB() { b.func();}
public void funcA() {a.funcA();}
public void funcB() {b.funcB();}
}另外楼主想要D有func, funcA和funcB的想法是不可能的,或者楼主的意思是D的func是D自己的实现?