码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之单例模式

时间:2018-08-05 00:28:59      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:线程   之间   turn   原则   代码   效率   系统内存   情况下   实现   

单例模式(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     }

 

设计模式之单例模式

标签:线程   之间   turn   原则   代码   效率   系统内存   情况下   实现   

原文地址:https://www.cnblogs.com/xiaoyulong/p/9420511.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!