我正在从Google Android博客改编Image Downloader。我希望ImageDownloader是单例的,因为我将在应用程序的多个地方使用它。我还希望能够使用不同的Bitmaps操纵Strategies(例如,生成透明位图)。

内容:

我希望能够在一个活动中使用ImageDownloader并设置透明位图,而在另一个活动中使用相同的ImageDownloader但使用不同的策略对象获得黑白位图。

最佳答案

您以为可以,但是您不希望ImageDownloader成为Singleton。 Singleton过度使用,不适合您的情况。想一想:如果只有一个类的实例在进行操作,如何使用不同的策略来操作位图?

您想要的是能够通过静态方法创建ImageDownloader实例的功能,而无需将其设置为Singleton。这些方法称为Factory方法,并且有许多描述它们的好网页。

您可能想要类似的东西:

class ImageDownloader {
  static ImageDownloader createImageDownloader(Strategy s) {...}
   //...
}


只要实例不存储状态,对具有相同参数的方法的每次调用都可以返回相同的ImageDownloader实例。此方法的某些版本称为“ Multiton”。 Google会告诉您更多信息。

09-04 09:49