zoukankan      html  css  js  c++  java
  • 设计模式之单例模式

    杨哥说单列设计模式,通俗易懂,只要看图和例子即可,废话不多说先上个图,看图说话才是王道,呵呵

    然后直接上个代码直接了当,是不是很直接,直接。。。。。这里杨哥要告诉小伙伴们,先把杨哥的代码拷过去执行一把再说,好了,该上代码了。

    package danli_designmode;

    //单列类

    public class Singleton {

       private static Singleton instance;

        private static  Object syncRoot = new Object();

        private Singleton()

        {

        }

        public static Singleton GetInstance()

        {

            if (instance == null)

            {

             synchronized (syncRoot)

                {

                    if (instance == null)

                    {

                        instance = new Singleton();

                    }

                }

            }

            return instance;

        }

    }

    这个类呢就很重要的了啦,眼尖的小伙们呢,已经看出该类中有两处玄机的地方,没看出的下伙伴呢,放大你的眼珠子,仔细研究哦,杨哥先上程序然后再说:

    package danli_designmode;

    public class SingletonMain {

    public static void main(String[] args) {

            Singleton s1 = Singleton.GetInstance();

            Singleton s2 = Singleton.GetInstance();

            if (s1 == s2)

            {

             System.out.println("Objects are the same instance");

                

            }

    }

    }

    好了,到这里你可以拿杨哥的代码到你那战斗机中溜一把试试咯,如果没有意外发生的话,在你那战斗机屏幕上应该会出现杨哥贴的这个效果:

    看见没有,得到的两个实例竟然相等,为什么呢?为什么呢?接下来杨哥给你简单粗暴的方式说说杨哥所理解的单列设计模式:

           其实啊,单例设计模式,解决的就是一个痛点:在你的项目中一个类仅有一个实例,不管你这个项目多大多牛逼哄哄,反正你只需要一个实例,因为有些时候一个类就只需要一个实例,打个比方比如在你经济有限的情况下,总不能生多个大头娃吧,我们的项目中也应如此,实例多了难管理等,只需要一个的我就要一个,并且我们应该让自身去创建管理该实例,同时提供一个全局访问该实例的入口即可。

         但单例模式中我们要避免多线程安全问题,所以呢需要加上双重锁。。

         杨哥说的是不是很简单粗暴易懂,是不是,是不是,如果是,点个赞,说个评论哦,说不定还能够大家一起撸撸代码。。。

  • 相关阅读:
    要坚持的好习惯
    Attribute与Property关系
    浅谈ES6中super关键字
    JS权威指南读书笔记(七)
    JS权威指南读书笔记(六)
    JS权威指南读书笔记(五)
    JS权威指南读书笔记(四)
    函数
    对象
    数值
  • 原文地址:https://www.cnblogs.com/xinanheishao/p/6974132.html
Copyright © 2011-2022 走看看