设计模式之单例模式、饿汉式与懒汉式对比

本文主要内容:

(1)设计模式分类
(2)单例模式
(3)饿汉式与懒汉式对比

1.设计模式
设计模式是一种设计经验的总结,是用来解决某些场景下的某一类问题(解决方案),有了设计模式之后,可以让代码更容易被理解,确保了复用性、可靠性、可扩展性。
2.设计模式分为三类
(1)创建型模式(五种)——>用于解决对象创建的过程
单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式
(2)结构型模式(七种)——>把类或对象通过某种形式结合在一起,构成某种复杂或合理的结构
适配器模式、装饰者模型、代理模式、外观模式、桥接模式、组合模式、享元模式
(3)行为型模式(十一种)——>用来解决类或对象之间的交互,更合理的优化类或对象的关系
观察者模式、策略模式、模板模式、责任链模式、解析器模式、命令模式、状态模式、备忘录模式、访问者模式、中介模式、迭代字模式
3.单例模式(Singleton)
(1)一个类只创建一个对象,有效的减少内存占用的空间
(2)设计一个系统,比如是百度。主要是搜索引擎。创建一个百度对象,调用搜索的方法做事情,同一时间会有很多人在使用这个系统,可以创建多个对象,通过对象调用方法。而单例模式是只创建一个对象,堆内存中只开辟一个空间,调用一次方法(即临时执行一次),方法执行完空间就回收了。

public class Singleton{
    //通过设计,这个类只能创建一个对象
    //每一个类都有默认的无参数的构造方法——公有的,在外面可以随意创建对象
    //让构造方法变为私有——保证外部不可以随便创建对象
    private Singleton(){
        //在本类中的某个成员位置上创建唯一的一个对象
    }
    //以下四个位置,那个可以创建对象?
    //属性——可以
   //方法——不行,每次执行都会创建一个对象,保证不了唯一
   //构造方法——不行,私有的,本身就是个构建过程
   //块——不行,没有返回值,创建了对象也无法给别人使用
   /*
   //public Singleton single = new Singleton();
   //public static void main(Dtring[] args){
   //    new Singleton();//栈溢出异常,如图所示***
   }*/
   //在当前类中存在一个私有的静态属性
   private static Singleton single = new Singleton();//直接为立即加载,饿汉式
   //提供一个获取单个对象的方法给用户,返回值将对象返回
   public static Singleton getSingleton(){
       return single;
   }
}
//延迟加载——懒汉式
public class Singleton{
    private Singleton(){
    }
   private static Singleton single;
   public static Singleton getSingleton(){
       if(single == null){
           return new Singleton();
       }
       return single;//引用类型
   }
}


4.单例模式实现
(1)私有的构造方法
(2)私有的静态的当前类对象作为属性
(3)公有的静态的方法返回当前类对象
5.饿汉式与懒汉式的对比
饿汉式(立即加载):对象启动时就加载了,不会产生对象没有就拿来使用的问题,空指针异常,启动项目加载的对象过多,有些还没有使用,产生服务器承载压力的问题
懒汉式(延迟加载):对象什么时候用到了才会加载,可能由于没有操作好,导致异常(严谨),启动项目时候只有需要的加载,不需要的还没有创建,不会浪费空间
生命周期托管:对象加载的过程交给别人,而单例对象是别人帮我们处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值