• 设计模式之单例模式


    设计模式是软件开发人员的一种编码经验的总结,遇到一般问题的通用解决方案,并被众多开发人员所知晓认可;

    以下是公认的几类设计模式

    创建型模式

    • 工厂方法模式、建造者模式、抽象工厂模式、原型模式、单例模式

    结构型模式

    • 桥接模式、代理模式、享元模式、外观模式、装饰器模式、组合模式、适配器模式

    行为型模式

    • 备忘录模式、解释器模式、命令模式、中介模式、观察者模式、策略模式、状态模式、模板方法模式、访问者模式、迭代子模式、责任链模式

    接下来先来记录下我对单例模式的理解:

    单例模式是为了解决什么问题呢?使一个类的对象成为这个类系统中唯一的实例化对象

    单例模式可以归纳为:一个类只有一个实例,自动实例化并提供给整个类系统

                几个重要的概念:1、该类只能有一个实例化对象     (提供私有的构造方法)

                                             2、必须自动创建实例化对象   (含有一个静态的该类私有对象)

                                             3、必须自行向整个系统提供实例  (提供一个静态的公有的方法用于创建、获取该类的私有静态对象)

    以下为两种经典方案的代码实现:饿汉PK懒汉

     1 package com.designpattern.singleton;
     2 
     3 //饿汉式:创建对象实例的时候直接初始化  空间换时间
     4 public class SingletonHungry {
     5     //1、创建类中私有构造
     6     private SingletonHungry(){
     7         
     8     }
     9     
    10     //2、创建该类型的私有静态实例
    11     private static SingletonHungry instance=new SingletonHungry();
    12     
    13     //3、创建公有静态方法返回静态实例对象
    14     public static SingletonHungry getInstance(){
    15         return instance;
    16     }
    17 }
     1 package com.designpattern.singleton;
     2 //懒汉式:类内实例对象创建时并不直接初始化,直到第一次调用get方法时,才完成初始化操作
     3 //时间换空间
     4 public class SingletonLazy {
     5     //1、创建私有构造方法
     6     private SingletonLazy(){
     7         
     8     }
     9     
    10     //2、创建静态的该类实例对象
    11     private static SingletonLazy instance=null;
    12     
    13     //3、创建开放的静态方法提供实例对象
    14     public static SingletonLazy getInstance(){
    15         if(instance==null)
    16             instance=new SingletonLazy();
    17         
    18         return instance;
    19     }
    20 }

    饿汉模式是在类加载时就创建实例,而懒汉是在第一次使用时才实例化,相比较饿汉第一次加载速度要快于懒汉,但是由于饿汉的实例创建时间比较早,如果长期不调用,会暂用系统空间。总结来说,饿汉是以空间换时间,而懒汉是时间换空间

                 

  • 相关阅读:
    洛谷 P3521 [POI2011]ROT-Tree Rotations 解题报告
    洛谷 P1640 [SCOI2010]连续攻击游戏 解题报告
    vector-pop_back
    vector-push_back
    vector-push_back
    vector-max_size
    vector-max_size
    vector-insert
    vector-insert
    vector-front
  • 原文地址:https://www.cnblogs.com/raychou1995/p/9797357.html
Copyright © 2020-2023  润新知