Java:接口(interface)是比静态类更好的面向对象设计吗?

标签 java interface static

我已经读过好几遍了,例如这里 https://stackoverflow.com/a/589885/1420898 , 静态成员是一种糟糕的 OO 设计,应该避免。我正在做的项目中也发生过这种情况;他们对类使用了接口(interface)+实现,在我看来应该是静态类,因为我们只是使用它的函数对其他类执行一些操作。

我的问题是,为什么我们应该使用接口(interface)而不是静态类?

最佳答案

就使用静态类与接口(interface)而言,静态类将用作帮助器,即它将是该类的单个实例,而通过接口(interface)实例化的类可能有许多不同的实现,并且一般用于多个实例类。当您只想让类执行某些操作而不存储特定于该调用的状态信息时,可以使用静态类。接口(interface)更多地用于一般的面向对象编程。

当我们希望在不实例化或创建其对象的情况下使用对象时,基本上会使用静态类。通常我们会把常用的函数或者重复使用的函数放在静态类中。由于将它们放入简单的类中将会产生大量开销,因为每次形成类对象时,它都会为我们所拥有的所有内容分配内存。因此,它通过使用静态类减少了开销。

当与接口(interface)进行比较时,虽然没有这样的比较,但这取决于你的要求,如果要求像上面那样,那么你肯定会选择静态类而不是接口(interface),但如果我们有这样的要求,我们有几个类,并且我们想要他们应该遵循这样的模式或在形成对象之前实现这些东西,那么我们会更喜欢接口(interface)而不是静态类。

此外,如果我的函数很常见,但具有对应于不同类的不同实现,那么我将再次选择接口(interface)而不是静态类。

关于Java:接口(interface)是比静态类更好的面向对象设计吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12687589/

相关文章:

java - 从枚举访问父类(super class)变量

java - 实现接口(interface)的方法是否在java中被覆盖

C# 修饰符 'abstract' 对此项无效

c++ - 如何用多态行为实现接口(interface)隔离c++

java - 如何在python中定义引用同一类对象的类变量

java - 我可以使用不同类的静态方法吗?

java - ADK Java 检查日期是否等于定义的日期间隔

java - com.sun.net.httpserver.HttpServer 最大连接数?

java - 夏令时和java

c++ - 在 iOS 静态库中隐藏 C++ 符号?