设计模式之单例模式
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 }
以上是关于设计模式之单例模式的主要内容,如果未能解决你的问题,请参考以下文章