Oop 是否存在无状态方法不应是静态的情况?
由于无状态方法大多标记为静态,因此它们不需要实例。但我想知道是否有一种情况,无状态方法仍然可以是类的实例方法?Oop 是否存在无状态方法不应是静态的情况?,oop,state,Oop,State,由于无状态方法大多标记为静态,因此它们不需要实例。但我想知道是否有一种情况,无状态方法仍然可以是类的实例方法? 我问这个问题的原因是,我读过一些提到“无状态和静态方法”的学习材料,所以我在思考它们之间的区别。例如,如果你想利用OOP术语中所谓的“策略模式” 例如,如果您正在编程一个小型计算器,并且希望对堆栈顶部的两个数字应用二进制操作,那么您希望将用户输入映射到类的实例加法,减法,…,除法,这些类都实现了接口二进制运算符,并且具有(无状态!)方法intapply(intfirstarg,ints
我问这个问题的原因是,我读过一些提到“无状态和静态方法”的学习材料,所以我在思考它们之间的区别。例如,如果你想利用OOP术语中所谓的“策略模式” 例如,如果您正在编程一个小型计算器,并且希望对堆栈顶部的两个数字应用二进制操作,那么您希望将用户输入映射到类的实例
加法
,减法
,…,除法
,这些类都实现了接口二进制运算符
,并且具有(无状态!)方法intapply(intfirstarg,intsecondarg)
基本算术运算+
,-
,*
,/
都是无状态的,但仍然需要将它们附加到类的实例
这是一个典型的例子,因为当你将OOP与纯函数式编程混合在一起时,没有可变状态的所有对象都会变成类似闭包的集合,这本质上是对甲基苯丙胺的好的旧OOP策略。请记住:根据所使用的语言/技术,静态几乎是一种反静态的策略-模式 例如,在Java中,静态的实现方式基本上可以杀死多态性。但多态性是OOP的基石之一。通过扩展某个类和重写某个方法,您可以使用它轻松地添加新功能。但是使用静态时,您直接“链接”您可以将自己定义为非常特定的类和方法实现
- 更改调用者以调用其他方法
- 更改该静态方法的行为
因此:静态有它的位置,但取决于您的技术堆栈,您在使用它时应该非常小心。因此,没有状态可能是必要的,但在确定某个方法是否应该是静态的时就足够了。静态方法不一定是无状态的。它们可能会使用/更改类静态数据。@Mat True,我的意思是说那些人真的没有这样做。