- Android设计模式与最佳实践
- (英)凯尔·缪
- 605字
- 2025-03-29 04:44:46
3.3 单例模式
单例模式是最简单的模式,但它也是最具争议性的模式之一。许多开发者认为完全没有必要使用单例模式,将类声明为静态的可以更便捷地执行相同的函数。有时候静态类是更便捷的选择,但单例模式总被滥用。虽然两种实现方式都对,但有些时候明显其中一种更可取。
❑ 如果希望对传递的变量执行函数,请使用静态类。例如,计算价格变量的折扣值。
❑ 如果需要一个完整的对象,且对象只有一个实例,并希望对象可用于程序的任意部分,请使用单例模式。例如,一个对象代表当前登录到应用程序的单个用户。
如你所想,单例模式的类图非常简单,如图3-13所示。

图3-13
如图3-13所示,下边的示例会假设在任何时间,我们的应用程序仅有一个用户登录,并将创建一个在代码的任意部分都能访问的单例对象。
Android Studio在项目资源管理器的New(新建)菜单下提供了单例创建,因此我们可以从这里开始。此演示只有两个步骤,如下所示。
(1)将这个类添加到项目中:
public class CurrentUser { private static final String DEBUG_TAG = "tag"; private String name; //创建实例 private static CurrentUser user = new CurrentUser(); //保护类不被实例化 private CurrentUser() { } //返回用户的唯一实例 public static CurrentUser getUser() { return user; } //设置姓名 protected void setName(String n) { name = n; } //输出用户姓名 protected void outputName() { Log.d(DEBUG_TAG, name); } } (2)通过向活动中添加以下代码来测试模式。 CurrentUser user = CurrentUser.getUser(); user.setName("Singleton Pattern"); user.outputName();
单例非常有用,但不用它也很容易。当任务是异步的(例如归档系统)时,以及当我们想要从代码中的任何位置访问其内容(例如前面示例中的用户名)时,使用单例模式非常方便。