在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();
对于我的程序来说,它是一个好的架构吗?以这种方式使所有属性和方法都是静态的,这是一种好的做法吗
# 1 楼答案
我想说的是,像上面所做的那样,在默认情况下将属性设置为静态并不是一个好的做法
如果像Radio is这样的对象只有一个实例,那么使用singleton pattern和私有属性以及适当的getter和setter。这通常是最好的方法,因为将公共接口与私有实现分离,实现中的更改(例如重命名变量)会导致应用程序的其他部分出现问题,并需要重构
静态变量应该只用于定义类型/类的一些公共属性。例如,可以在静态变量中计算类的现有实例
# 2 楼答案
简单地说:不要使用静态的
在良好的OO设计中,静态是一种异常。它会导致类之间的直接耦合。这使得以后很难取代“执行”;这使得编写合理的单元测试变得困难
意思:默认情况下,您不使用静态。在某些情况下,可以使用它;但是,您展示的示例代码看起来根本不应该使用静态
相反,你应该定义一个接口,它表示你的收音机的功能;允许在该接口后面使用不同的实现
# 3 楼答案
这取决于你在找什么
假设你正在创建4个无线电对象。 无线电一号。。。。,无线电四台
现在,如果你想让所有的收音机同时启动,你应该选择静态变量,因为静态属性是一个类中所有对象的特征。它们不是任何特定对象独有的,在实践中,应使用以下类别对其进行评估:
收音机。radionOn=true
而不是无线电一号。radioOn=true
所以,我建议你只把所有物体共有的属性设置为静态。如果所有的房产都在这个范围之内, 那就意味着你只需要一个对象作为类,因为你所有的对象的行为都是一样的。所以最好只有一个目标。在这种情况下,可以使用单例模式来创建对象
# 4 楼答案
static
变量。它直接将几个 你的课李># 5 楼答案
最好避免使用静态变量。这不是一个好的做法。静态变量具有全局作用域,这使得测试非常困难。任何东西都可以修改静态变量。此外,使用静态不是线程安全。你也不能控制静态变量i的产生和破坏。所以不建议使用静力学