抽丝剥茧设计模式 -------- 单例模式(Singleton)

一、基础【创建型模式】

        1、定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

           【通俗易懂:有一个class,你无法保证别的人会在其他的控制器里new 这个类,所以要保证这个类是私有的,别人在其他的控制器是无法new这个类的】

            这种模式涉及到单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 

        2、主要解决:一个全局使用的类频繁的创建与销毁;

        3、何时使用?:当想控制实例数目,节省资源的时候;

        4、特点:构造器必须是私有的,外部类无法通过调用构造器方法创建该实例;

                         需要提供一个公开的方法来获取这个唯一的实例;

        5、优点:某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销;

                         new是很耗资源的操作,省去了NEW 操作符,降低了系统内存的使用频率,减轻GC(垃圾回收机制)压力;

                         避免了对资源的重复占用;

               缺点:没有接口,不能继承;

        6、分类

               懒汉式:当第一次访问单例模式时才进行创建;什么时候用什么时候初始化;

               饿汉式直接在最开始的时候直接创建;不管用不用都直接创建;

相对于java的单利模式有8中写法,php的单利模式就是太简单了。可以说没有饿汉式。

还是要会手写单例模式^^^^^    哪怕为了面试呢

test();

             

懒汉式和饿汉式对比后的应用场景:

如果某个数据是经常访问的热点数据,那我们可以在系统启动的时候使用饿汉模式提前加载,这样哪怕是第一个用户调用都不会创建,而且调用频繁也不会存在内存浪费了;

如果数据一段时间内不会经常有人调用,那就用懒汉;如果你使用的是饿汉式,过了好几个月还没调用,提前加载的类在内存中是有资源浪费的;

你可能感兴趣的:(框架内核专题,设计模式)