有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中使用静态类时

我对java不是很熟悉。我创建了一个jersey网络服务器。有不同的功能,例如startRodio()stopRadio()setRadioIp()。。。我创建了一个RequestHandler类来处理http请求,并创建了另一个Radio类来实现它们。Radio类的所有属性和方法都是静态的。看起来像

收音机

class Radio{

public static boolean radionOn;
public static String radioIpadress;


public static boolean startRadio(){
radioOn = true;
// some other operation
}
...

RequestHandler

classe RequestHandler {

@path(/startRodio)
.....
if (!Rodio.radioOn)
Radio.startRadio();

对于我的程序来说,它是一个好的架构吗?以这种方式使所有属性和方法都是静态的,这是一种好的做法吗


共 (5) 个答案

  1. # 1 楼答案

    我想说的是,像上面所做的那样,在默认情况下将属性设置为静态并不是一个好的做法

    如果像Radio is这样的对象只有一个实例,那么使用singleton pattern和私有属性以及适当的getter和setter。这通常是最好的方法,因为将公共接口与私有实现分离,实现中的更改(例如重命名变量)会导致应用程序的其他部分出现问题,并需要重构

    静态变量应该只用于定义类型/类的一些公共属性。例如,可以在静态变量中计算类的现有实例

  2. # 2 楼答案

    简单地说:不要使用静态的

    在良好的OO设计中,静态是一种异常。它会导致类之间的直接耦合。这使得以后很难取代“执行”;这使得编写合理的单元测试变得困难

    意思:默认情况下,您不使用静态。在某些情况下,可以使用它;但是,您展示的示例代码看起来根本不应该使用静态

    相反,你应该定义一个接口,它表示你的收音机的功能;允许在该接口后面使用不同的实现

  3. # 3 楼答案

    这取决于你在找什么

    假设你正在创建4个无线电对象。 无线电一号。。。。,无线电四台

    现在,如果你想让所有的收音机同时启动,你应该选择静态变量,因为静态属性是一个类中所有对象的特征。它们不是任何特定对象独有的,在实践中,应使用以下类别对其进行评估:

    收音机。radionOn=true

    而不是无线电一号。radioOn=true

    所以,我建议你只把所有物体共有的属性设置为静态。如果所有的房产都在这个范围之内, 那就意味着你只需要一个对象作为类,因为你所有的对象的行为都是一样的。所以最好只有一个目标。在这种情况下,可以使用单例模式来创建对象

  4. # 4 楼答案

    1. 只是不要使用static变量。它直接将几个 你的课
    2. 如果您确定 只需要一个对象
  5. # 5 楼答案

    最好避免使用静态变量。这不是一个好的做法。静态变量具有全局作用域,这使得测试非常困难。任何东西都可以修改静态变量。此外,使用静态不是线程安全。你也不能控制静态变量i的产生和破坏。所以不建议使用静力学