gpt4 book ai didi

Java : Using Functional Vs OOP Paradigms

转载 作者:行者123 更新时间:2023-11-30 06:10:11 24 4
gpt4 key购买 nike

我有一个特定的行为,我想在类里面抽象出来。

我看到有两种方法可以做到这一点。

选项 1:该行为可以被“SomeClass”的传统子类覆盖。

Class SomeCalss{
public Output behaviour(Input){
//overriden behaviour
}
}

Class SomeOtherClass extends SomeCalss{
public Output behaviour(Input){
//overriden behaviour
}
}

选项 2:可以通过从外部插入函数定义来指定行为

Class SomeCalss{
public Output behaviour(Function<Input,Output> function, Input){
//Functional paradigm
}
}

“选项 2”中不需要子类化。

问题:(编辑)

  • 随着 java 现在从 java8+ 开始完全支持这些函数式编程范例,传统的抽象行为过程是否发生了任何转变?抽象出我的行为的更好方法是什么?为什么?如果情况不同,那么在什么情况下应该使用 1 而不是其他?

最佳答案

虽然选项 2 为您提供了灵 active ,但它会强制客户端代码指定 Function 参数,而您可能希望避免这种情况。

您的目标是为客户提供一个简单的界面(行为(输入))并隐藏您可以隐藏的所有内容,以便客户独立于您的代码。

选项 3 是

interface Behaves { public Output behaviour(Input i); }
class Behaviour1 implements Behaves {
public Output behaviour(Input i){ /* your implementation here*/ }
}
class FunctionBasedBehaviour implements Behaves {
private final Function<Input,Output> f;
public FunctionBasedBehaviour (Function<Input,Output> f) {this.f=f;}
public Output behaviour(Input i){ return f(i); }
}

关于Java : Using Functional Vs OOP Paradigms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50421882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com