设计模式之单例模式

Posted xiaoyulong

tags:

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

单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。

作用(解决的问题):保证1个类只有1个对象,降低对象之间的耦合度

优点:
1、提供了对唯一实例的受控访问;
2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象, 单例模式无疑可以提高系统的性能;
3、可以根据实际情况需要,在单例模式的基础上扩展做出双例模式,多例模式;

 缺点:
1、单例类的职责过重,里面的代码可能会过于复杂,在一定程度上违背了“单一职责原则”。
2、如果实例化的对象长时间不被利用,会被系统认为是垃圾而被回收,这将导致对象状态的丢失。

 

实现:

饿汉式单例模式

 1 public class Singleton1
 2     {
 3         //饿汉式单例模式实现(无论系统在运行时是否需要使用该单例对象,由于在类加载时该对象就需要创建,因此从资源利用效率角度来讲,饿汉式单例不及懒汉式单例)
 4         private static Singleton1 mInstance = new Singleton1();
 5 
 6         private Singleton1()
 7         { }
 8 
 9         public static Singleton1 instance
10         {
11             get
12             {
13                 return mInstance;
14             }
15         }
16     }

懒汉式单例模式

 1 public class Singleton2
 2     {
 3         //懒汉式单例模式实现(在多线程的情况下有可能会出问题)
 4         private static Singleton2 mInstance = null;
 5 
 6         private Singleton2()
 7         { }
 8 
 9         public static Singleton2 instance
10         {
11             get
12             {
13                 if (mInstance == null)
14                 {
15                     mInstance = new Singleton2();
16                 }
17                 return mInstance;
18             }
19         }
20     }

 












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

设计模式之单例模式

Java设计模式之单例模式

设计模式之单例模式以及简单代码实现

设计模式之单例设计模式

设计模式之单例模式

设计模式之单例模式