• 设计模式之单例模式


    单例模式(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     }
  • 相关阅读:
    深入研究Node.js的底层原理和高级使用
    Node.js实际案例分享
    Node.js的下载、安装、配置、Hello World、文档阅读
    Node.js初识
    sphinx初识
    Yii2中后台用前台的代码设置验证码显示不出来?
    彻底解决Yii2中网页刷新时验证码不刷新的问题
    yii2高级模板使用一个域名管理前后台
    Shot(三分)
    遮挡判断(模拟)
  • 原文地址:https://www.cnblogs.com/xiaoyulong/p/9420511.html
Copyright © 2020-2023  润新知