我正在从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会告诉您更多信息。