面向对象代码中的冗余导入

时间:2010-03-03 16:33:53

标签: oop

当包含一个返回另一个类型的对象的类时,我不确定在为返回的对象类型导入类文件时的最佳实践。因此,如果所有三个类都在单独的文件中:

class file A imports class file B
class file B imports class file C
class B returns an object of type C to class A

A类是否也应该导入C类才能更明确,或者可以认为C类已经被B类导入,间接地被A类导入了?

2 个答案:

答案 0 :(得分:1)

我认为这是特定于语言和实现的。

我知道在C ++中,如果你做#include,那就像复制和粘贴文件一样好#including。因此,当你这样做时,你实际上引入了任何导入......只要它不与命名空间中的实体发生冲突就应该没问题。只需确保您拥有的每个* .h文件都有一个#pragma或#ifndef部分。

在Java中,你必须明确。根据我的个人经验,它将要求使用所有类型的声明。不确定后端,但至少我的IDE抱怨,我相信直接来自javac。

答案 1 :(得分:1)

恕我直言,从OO设计的角度来看(并不是说我好),只要A类不需要知道关于C类的任何具体内容,你就不需要导入(模块,而不是文本) 。 这可能发生在例如当A类依赖于类/接口D的对象时,它将由B(来自工厂方法)返回,它将是类/接口C的对象,它扩展/实现D.这是工厂方法设计模式的要点 - 制动具体类与其所需接口之间的依赖关系。

相关问题