我想在我的类中了解我的应用程序状态之一。使用静态布尔变量或使用具有Getters和Setters方法的Singleton类是很好的。 简要介绍该方法的优缺点。
答案 0 :(得分:2)
如果您将其设置为静态以便从其他类更改状态,则将其公之于众。还有静态变量的getter和setter是没有意义的,因为它们是类变量。将变量公开也不是一个好的编程习惯。因此,更好的选择是使用单例类并具有状态变量的getter和setter方法。此外,如果您处于多线程环境中,请将变量设置为volatile以实现正确同步。
答案 1 :(得分:1)
考虑使用访问器而不是直接暴露类的字段,实际上有许多充分的理由 - 除了封装的参数和使未来的更改更容易。
以下是我所知道的一些原因:
与获取或设置相关联的行为的封装 property - 这允许其他功能(如验证) 稍后会更容易添加。
在暴露a时隐藏属性的内部表示 使用替代表示的财产。
将公共界面与变更隔离开来 - 允许公众 接口在实现更改时保持不变 影响现有消费者。
控制生命周期和内存管理(处理)语义 属性 - 在非托管内存中尤为重要 环境(如C ++或Objective-C)。
为属性更改时提供调试拦截点 在运行时 - 调试属性更改为的时间和位置 如果没有这一点,特定的价值可能会非常困难 语言
改进了与旨在运营的库的互操作性 反对属性getter / setters - 模拟,序列化和WPF 浮现在脑海中。
允许继承者更改属性的语义 通过覆盖getter / setter方法来表现和暴露。
允许getter / setter作为lambda表达式传递 而不是价值观。
答案 2 :(得分:0)
Singleton模式比静态类有几个优点。
This可能会对您有所帮助。
答案 3 :(得分:0)
b / w Singleton和一堆静态方法的主要区别在于单例可以实现接口,因此你可以传递单例,就好像它只是“另一个”实现一样。
你也可以克隆Singleton的对象,但是我们不能克隆静态类对象。