Alt*_*ape 12 java coding-style
我正在审查我编写的一些代码的一位新合作者告诉我,她不习惯看到直接在Java代码中使用的接口,例如:
public interface GeneralFoo { ... }
public class SpecificFoo implements GeneralFoo { ... }
public class UsesFoo {
GeneralFoo foo = new SpecificFoo();
}
Run Code Online (Sandbox Code Playgroud)
相反,期待看到
public interface GeneralFoo { ... }
public abstract class AbstractFoo implements GeneralFoo { ... }
public class SpecificFoo extends AbstractFoo { ... }
public class UsesFoo {
AbstractFoo foo = new SpecificFoo();
}
Run Code Online (Sandbox Code Playgroud)
我可以看到这个模式何时有意义,如果所有SpecificFoos通过AbstractFoo共享功能,但如果各种Foos有完全不同的内部实现(或者我们不关心特定的Foo如何做Bar,只要它这样做),直接在代码中使用接口有什么害处吗?我在某种程度上意识到这可能是一个番茄/西红柿的东西,但我很好奇第二种风格的优势,或者第一种风格的缺点,我不知道.
Mik*_*key 15
如果您不需要具有所有实现共有的某些细节的抽象类,那么就不需要抽象类.复杂性通常会添加到应用程序中,因为有些人认为需要支持尚未定义的未来功能.坚持行之有效,后来重构.
归档时间: |
|
查看次数: |
1738 次 |
最近记录: |