设计模式:单例模式

Posted 峰啊那昌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式:单例模式相关的知识,希望对你有一定的参考价值。

在很多情况下,某些类是不需要被重复产生对象的;


例如:需要有一个程序保存加载的数据信息,这个对象是在程序运行中一直存在的实例化对象,并且不会发生改变


分为两种类型:

  1. 懒汉式(需要考虑线程同步问题):在第一次使用的时候进行实例化对象处理

  2. 饿汉式:在加载时自动提供类的实例化

要点思想:

  • 保证操作只有唯一一个实例化对象

  • 单例类必须自己创建自己的唯一实例

  • 构造方法私有化,类内部提供static方法获取实例化对象,不管外部如何改变操作则只有一个对象被提供

饿汉式:

/** * 饿汉式单例模式: * 在加载时自动提供类的实例化对象 * */public class SingleTon {
private static final SingleTon INSTANCE = new SingleTon(); //构造函数私有化,此类则不会被实例化 private SingleTon() { } //获取唯一实例化对象 public static SingleTon getInstance(){ return INSTANCE; }
public void print(){ System.out.println("单例模式饿汉例子"); }}
class SingleTonTest{ public static void main(String[] args) { SingleTon instance = null; instance = SingleTon.getInstance(); instance.print(); }}

懒汉式:

/** * 懒汉式: * 在第一次使用时进行实例化对象处理 * */
public class SingleTon {
private static SingleTon instance ; private SingleTon() { } public static SingleTon getInstance(){ //第一次使用,实例化对象 if (instance == null){ instance = new SingleTon(); } return instance; }
public void print(){ System.out.println("单例模式懒汉例子"); }}
class SingleTonTest{ public static void main(String[] args) { SingleTon instance = null; instance = SingleTon.getInstance(); instance.print(); }}

以上是关于设计模式:单例模式的主要内容,如果未能解决你的问题,请参考以下文章

常用代码片段

性能比较好的单例写法

你熟悉的设计模式都有哪些?写出单例模式的实现代码

单例模式以及静态代码块

设计模式之单例模式

设计模式之单例模式