Java 这是使用单例的好理由吗?
我正在制作一个安卓应用程序,它将有本地公交车的时刻表。 有不止一个时间表,使用的时间表取决于当天 如果是假期,我必须使用一个特别的时间表,所以我想知道什么时候是假期,什么时候不是 问题是,我正在创建一个类来处理这个问题,它将尝试从内存或web api检索信息。然后其他一些类将能够与这个类进行通信,但是我觉得没有必要拥有这个类的多个实例,我可以只创建一个实例并与其他类共享它Java 这是使用单例的好理由吗?,java,android,singleton,Java,Android,Singleton,我正在制作一个安卓应用程序,它将有本地公交车的时刻表。 有不止一个时间表,使用的时间表取决于当天 如果是假期,我必须使用一个特别的时间表,所以我想知道什么时候是假期,什么时候不是 问题是,我正在创建一个类来处理这个问题,它将尝试从内存或web api检索信息。然后其他一些类将能够与这个类进行通信,但是我觉得没有必要拥有这个类的多个实例,我可以只创建一个实例并与其他类共享它 这个类是一个普通类还是创建一个普通类更好?单例类给您带来的一个主要好处是,您肯定有一个且只有一个执行某些操作的对象实例,并且
这个类是一个普通类还是创建一个普通类更好?单例类给您带来的一个主要好处是,您肯定有一个且只有一个执行某些操作的对象实例,并且它只实例化一次(最好是在应用程序的特定点,例如启动时或仅在执行某些其他操作后) 例如,一个缓存实现就是一个例子:您希望确保所有需要某个缓存的类都从同一个对象读写,这些对象可能在启动时创建并填充了信息 您的情况似乎并非如此,除非您在应用程序启动时获取所需的信息,然后出于某种原因将它们保留下来:在这种情况下,您希望确保您的信息只获取一次,以避免浪费内存和精化时间。此外,如果您需要执行某种操作,单例也可以类实例化时的操作,例如打开一个保持打开状态的连接 另一方面,如果您只需要一个具有某种方法的类来调用某些外部API或数据库,而不需要记住其中的任何信息,那么就没有理由初始化单例 如果这是您的情况,为什么不尝试一些静态类/方法呢?它们可以像普通方法一样直接在类上调用,而无需实例化对象或保持状态,节省内存并避免副作用。在您的情况下(从内存中检索信息),绝对避免使用单例类,因为它很可能与您的活动上下文相关联 因此,您的类将具有对类的静态引用
如果您只需要一个类实例,只需在onCreate方法中创建一个类实例,这将使应用程序更易于管理。思想是,当应用程序启动时,类加载信息,然后它永远不会更改。我会遇到同样的问题吗?如果您的类包含与活动相关的操作,那么很可能会出现这种情况(例如,与视图的交互、共享引用、弹出消息、文件i/o操作等)。您可以考虑所有情况,并将您的类保持在一个单一实例中,在所有情况下都避免活动上下文,但是,当您使用片段、其他活动时,您的类仍将保留在内存中。是否有理由不只是创建类的单个实例而不用担心?单一实例在扩展应用程序类时很好,但是这通常被认为是内存管理不足。