其中A extends B implements C
由于程序需要 ,需要让A extends E,但现在在类B和接口C,抽象类E 都已经无没变更改,无法在扩展
为了达到这种效果,我在A类中创建一个内部类D,让D extends E,(相当于多继承),然后在D中访问A的方法、具体实现,在由A
来构造D的实例,来调用D的方法
这样设计有没有什么不妥,有什么坏处?
8 个解决方案
#1
应该没什么问题吧,只不过逻辑比较复杂而已
#2
实际上很多复杂类就是这么做的。
在awt中就很多。
在awt中就很多。
#3
不妥就是这个类A过于复杂了,最好将抽象类E变为接口,A implements C,E
不过你说E已经无法更改成接口了,那么只能做一些补救措施了,即将内部类声明为static
这样在A中就不用先构造D的实例来访问D的方法了
不过你说E已经无法更改成接口了,那么只能做一些补救措施了,即将内部类声明为static
这样在A中就不用先构造D的实例来访问D的方法了
#4
最好尝试重新设计一下层次结构了
#5
这样做没有什么不妥啊,不过看起来会比较繁杂,别人可能会很难看懂啊
#6
to duo_clb :
请教依你的意见这个应该如何设计呢?
magic256:内部类声明为static 这样在A中就不用先构造D的实例来访问D的方法了,如果这样,这个静态内部类就不能访问外部数据了,我也想过,呵呵,不过还是谢谢你!
请教依你的意见这个应该如何设计呢?
magic256:内部类声明为static 这样在A中就不用先构造D的实例来访问D的方法了,如果这样,这个静态内部类就不能访问外部数据了,我也想过,呵呵,不过还是谢谢你!
#7
在我看来在面向对象的设计中,一切皆是对象,在这里,内部类是不是也可以看成一个单独的对象,只是比较“特殊”,比如他支持继承...,(这里是把内部独立出来看)他具有一切对象对具备的特性,这样看内,这样设计应该是可行的,我不想把这个内独立出来,因为我认为这没有意义,这个内部类除了A类会用他以外,不会在有任何地方会访问他,基于上面的思路,我才这么做,才会有上面的问题!
#8
问题是没有问题
但是这是一种很不好的设计
因为你的层层嵌套,造成了N多的耦合
不涉及修改时没什么问题,但是一旦需要修改代码的话,势必需要同时修改多个代码段
但是这是一种很不好的设计
因为你的层层嵌套,造成了N多的耦合
不涉及修改时没什么问题,但是一旦需要修改代码的话,势必需要同时修改多个代码段
#1
应该没什么问题吧,只不过逻辑比较复杂而已
#2
实际上很多复杂类就是这么做的。
在awt中就很多。
在awt中就很多。
#3
不妥就是这个类A过于复杂了,最好将抽象类E变为接口,A implements C,E
不过你说E已经无法更改成接口了,那么只能做一些补救措施了,即将内部类声明为static
这样在A中就不用先构造D的实例来访问D的方法了
不过你说E已经无法更改成接口了,那么只能做一些补救措施了,即将内部类声明为static
这样在A中就不用先构造D的实例来访问D的方法了
#4
最好尝试重新设计一下层次结构了
#5
这样做没有什么不妥啊,不过看起来会比较繁杂,别人可能会很难看懂啊
#6
to duo_clb :
请教依你的意见这个应该如何设计呢?
magic256:内部类声明为static 这样在A中就不用先构造D的实例来访问D的方法了,如果这样,这个静态内部类就不能访问外部数据了,我也想过,呵呵,不过还是谢谢你!
请教依你的意见这个应该如何设计呢?
magic256:内部类声明为static 这样在A中就不用先构造D的实例来访问D的方法了,如果这样,这个静态内部类就不能访问外部数据了,我也想过,呵呵,不过还是谢谢你!
#7
在我看来在面向对象的设计中,一切皆是对象,在这里,内部类是不是也可以看成一个单独的对象,只是比较“特殊”,比如他支持继承...,(这里是把内部独立出来看)他具有一切对象对具备的特性,这样看内,这样设计应该是可行的,我不想把这个内独立出来,因为我认为这没有意义,这个内部类除了A类会用他以外,不会在有任何地方会访问他,基于上面的思路,我才这么做,才会有上面的问题!
#8
问题是没有问题
但是这是一种很不好的设计
因为你的层层嵌套,造成了N多的耦合
不涉及修改时没什么问题,但是一旦需要修改代码的话,势必需要同时修改多个代码段
但是这是一种很不好的设计
因为你的层层嵌套,造成了N多的耦合
不涉及修改时没什么问题,但是一旦需要修改代码的话,势必需要同时修改多个代码段