单例模式 是保证整个程序中, 某个类,只构造一次, 比如打印机类, 构造一次打印机类比较费时间, 构造多个也没有意义, 因为操作的都是同一台打印机。 下面我们动手实现, 如下图,创建控制台应用程序。 2 要确保某个类只能构建一次, 就要限制外部使用New操作符,创建变量。 那么如何限制使用New操作符呢 把构造器方法设置为Private。 这是实现单例模式的第一板斧。 添加SingleClass方法,构造器设为Private。 如下图: 3 那么问题来了, 构造器Pirvate,外部不能New, 那么这个类怎么使用呢。 第二板斧来啦,提供一个Static方法。 同学们都知道Static方法,不需要构建类。 直接用类名就可以调用。 用该方法返回一个SingleClass类。 如下图: 4 下面是第三板斧: 如何保证只构建一次呢, 按照上面的GetInstance方法的写法, 调一次改方法,就New一个SingleClass类。 解决方法是: 在类中定义一个SingleClass类型的变量, 用Private关键字修饰, 每次调用GetInstance方法时, 判断SingleClass类型的变量是否为空, 不为空就直接返回, 为空就new一个。 这样说,同学们肯定晕了。 下面直接看代码: 5 下面我们加一些调试代码, 验证SingleClass是不是只被构造了一次。 如下图: 6 运行程序, 可以看到构造方法, 只被调用了一次。 7 按照惯例,总结一下。 要实现单例模式,需要三板斧。 第一:把构造函数私有化。 第二:提供Static方法,返回类类型的变量。 第三:通过私有的类类型变量,判断是否需要New。
|