前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一起来学GOF23种设计模式

一起来学GOF23种设计模式

作者头像
Python进击者
发布2019-09-17 15:05:08
3660
发布2019-09-17 15:05:08
举报
文章被收录于专栏:JAVAandPython君JAVAandPython君

1

写在前面的话

从今天开始,资源君带大家来学习Java中的23种设计模式。首先我给大家简单介绍一下这23种设计模式:

创建型模式:– 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式。

结构型模式:– 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、式。

行为型模式:– 模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备式、解释器模式、状态模式、策略模式、职责链模式、访问者

其实这些设计模式只是一种思想,大家不需要把代码全部背下来,而是将设计者的思维融入大家的学习和工作中,更高层次的思考!

2

单例模式

单例模式主要分为2种,其他的类型我们不做解释:饿汉式(线程安全,调用效率高。 但是,不能延时加载。)

懒汉式(线程安全,调用效率不高。 但是,可以延时加载

那么单例有什么作用呢?

核心作用:– 保证一个类只有一个实例,并且提供一个访问该实例的全局访问

给大家举几个很常见的例子

– Windows的Task Manager(任务管理器)就是很典型的单例模式

– windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个

有啥子优点:

– 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决

– 单例模式可以在系统设置全局的访问点,优化环共享资源访问,例如可以设计一个单例类,负责所有数据表的映射

3

饿汉式单例

代码语言:javascript
复制
public class SingletonDemo1 {
  
  //类初始化时,立即加载这个对象(没有延时加载的优势)。加载类时,天然的是线程安全的!
  private static SingletonDemo1 instance = new SingletonDemo1();  
  
  private SingletonDemo1(){
  }
  
  //方法没有同步,调用效率高!
  public static SingletonDemo1  getInstance(){
    return instance;
  }
  
}

饿汉式,顾名思义,一个字-饿,必然是一加载这个类,马上就new出一个对象(static变量会在类加载的时候初始化)此时也不会涉及多个线程对象访问该对象的问题。虚拟机保证只会装载一次该类,肯定不会发生并发访问的问题。因此,可以省略synchronized关键。

但是存在一个问题:就是当我们无论是否使用了这个对象,它都帮我们new出来这个对象,这会导致资源的浪费!

4

懒汉式单例

代码语言:javascript
复制
public class SingletonDemo2 {
  
  //类初始化时,不初始化这个对象(延时加载,真正用的时候再创建)。
  private static SingletonDemo2 instance;  
  
  private SingletonDemo2(){ //私有化构造器
  }
  
  //方法同步,调用效率低!
  public static  synchronized SingletonDemo2  getInstance(){
    if(instance==null){
      instance = new SingletonDemo2();
    }
    return instance;
  }
  
}

懒汉式,顾名思义,一个字-懒,也就是当我们需要他的时候,我们就把他new出来,不需要的时候就不会new出它。

但是也会出现一些问题: 资源利用率高了。但是,每次调用getInstance()方法都要同步,并发效率较

5

结语

上面我简单的给了大家一个单例模式的概念,单例模式仍然有着许多方面需要注意,日后我会深入跟大家一起讨论!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档