gpt4 book ai didi

Java : preferred design when multiple methods share same arguments (class member ?)

转载 作者:行者123 更新时间:2023-12-01 18:06:31 25 4
gpt4 key购买 nike

上下文:我认为 Java 中的对象创建和管理是有成本的,我们在编程时应该牢记这一点。不过,我不知道这个成本有多大。因此我的问题是:

我有多个共享相同参数的函数:

  • detectCollision(ArrayList<Mobile>, ArrayList<Inert>, double dt)
  • updatePositions(ArrayList<Mobile>, double dt)
  • 等等

据我所知,有两种组织它们的方法(参见下面的代码):

  1. 定义(可能静态,但不一定)方法并转发每次调用的参数
  2. 使用私有(private)成员变量创建一个临时对象并删除参数列表。

请注意 Mover对象没有私有(private)内部状态,只是一堆使用参数 ArrayList<Mobile> 的算法。 , ArrayList<Inert> , double dt .

问题:首选哪种方法?它有成本吗?有更标准的替代方案吗?

这是说明第一点的片段:

public class Mover{
public static void updatePositions(ArrayList<Mobile>, double dt){...}
/* remove the static keyword if you need polymorphism, it doesn't change the question */

public static Collisions detectCollision(ArrayList<Mobile>, ArrayList<Inert>, double dt){...}
//etc.
}

这是说明第二点的片段:

public class Mover{
public Mover(ArrayList<Mobile>, ArrayList<Inert>, double dt){...}
public void updatePositions(){...}
public Collisions detectCollision(){...}
//etc.

private ArrayList<Mobile> mobiles;
private ArrayList<Inert> inerts;
//etc.
}

最佳答案

我建议您使用第二种变体。除了良好的可读性之外,它还允许您稍后扩展该类(请参阅 SOLID -> 开放/封闭原则)。一般来说,我永远不会创建这样的实用程序类,因为它不是 OOP ( OOP Alternative to Utility Classes )。

关于Java : preferred design when multiple methods share same arguments (class member ?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043291/

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