这主要是一个编码风格的问题。我想知道从实用程序类存储和获取对象是否是一个好的编码原则?
例如,假设我创建了一个整数列表,并且希望该列表供其他类使用。但是,为了做到这一点,每次我想使用/编辑列表时,我都必须在每个类中传递列表。 代替执行此操作,创建一个实用程序类是一种好习惯吗,该实用程序类在每次我要使用它时都会为我“获取”此列表?
使用实用程序类会清理我的代码。但是,我听说甚至使用实用程序类也被认为是不好的做法。谢谢!
public class ThisExample {
private static final List<Integer> thisList = new ArrayList<Integer>();
public static List<Integer> getMoveHistory() {
return thisList;
}
}
答案 0 :(得分:2)
我建议您从利弊的角度来看待您的问题,而不是从最佳实践的角度来看待,因为后者是一种见解。
使用全局容器的优点:
使用全局容器的缺点:
类耦合-所有将使用全局变量的类都必须导入相同的Container类,这将导致许多其他类依赖于该容器类。现在,对容器类的更改将同时影响许多其他类。
单点故障-许多应用程序代码流将通过抛出容器类。出于性能方面的考虑,这使得在容器类上使用某些方法(例如使用同步锁)不切实际。
调试困难-由于应用程序的许多元素将不可避免地访问全局变量,因此调试它们的内容可能会更加困难,尤其是在多线程解决方案中。
面向对象的反模式-如果OO方法专注于代码的封装和解决方案的抽象,则全局容器与之完全相反-共享代码仅关注实现(当使用DS global变量)。
始终在内存中-只要应用程序运行,全局容器的变量将处于作用域内。许多内存泄漏是由于忘记了范围内的变量造成的。
参考文献: