我对java不太熟悉。我创建了一个泽西网络服务器。有不同的功能,如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();这是我的程序的好架构吗?以这种方式使所有的属性和方法都是静态的,这是一个好的实践吗?
发布于 2016-09-26 11:58:58
简单地说:不要使用静态。
静态是良好的面向对象设计中的异常。它会导致类之间的直接耦合。这使得以后很难替换“实现”,而且很难编写合理的单元测试。
意思:默认情况下,您不使用静态。在某些情况下,可以使用它;但是您显示的示例代码看起来根本不应该使用静态代码。
相反,您应该定义一个表示收音机功能的接口;允许该接口后面的不同实现。
发布于 2016-09-26 11:59:08
我要说的是,像上面所做的那样,使属性默认是静态的,这根本不是一个好的实践。
如果您只有一个像Radio这样的对象的实例,那么使用单例模式和私有属性与适当的getter和setter。这通常是最好的方法,因为您将公共接口与私有实现分开,而实现中的更改(例如重命名变量)将在应用程序的其他部分引起问题,并且需要重构。
静态变量应该只用于定义类型/类的一些公共属性。例如,您可以在静态变量中计算类的现有实例。
发布于 2016-09-26 15:19:28
最好避免使用静态变量。这不是一个好做法。静态变量具有全局范围,因此测试非常困难。而且,任何东西都可以修改静态变量。更重要的是,使用静态并不是线程安全。此外,您也无法控制静态变量I的创建和销毁。所以使用静力学是不可取的。
https://stackoverflow.com/questions/39702000
复制相似问题