设计模式
来源:互联网 发布:linux 修改网络地址 编辑:程序博客网 时间:2024/06/06 07:09
单例模式是Java中最常用的模式之一,它通过阻止外部实例化和修改,来控制所创建的对象的数量。这个概念可以被推广到仅有一个对象能更高效运行的系统,或者限制对象实例化为特定的数目的系统中。例如:
1.私有构造函数 - 其他类不能实例化一个新的对象。
2.私有化引用 - 不能进行外部修改。
3.公有静态方法是唯一可以获得对象的方式。
单例的两种写法:饿汉式和懒汉式
(1)饿汉式 开发通常用这种方式
class Singleton { //1,私有构造函数,其他类就不能访问构造方法了 private Singleton(){} //2,创建本类对象,private使外部不能随意更改 private static final Singleton s = new Singleton(); //3,对外提供公共的访问方法 public static Singleton getInstance() { return s; }}
(2)懒汉式 面试通常考这种方式
饿汉式 是不管你用不用,上来就创建对象
懒汉式 是事先做个判断 什么时候用什么时候创建
//懒汉式, 单例的延迟加载模式 面试class Singleton { //1,私有构造函数 private Singleton(){} //2,声明一个本类的引用 private static final Singleton s; //3,对外提供公共的访问方法 public static Singleton getInstance() { if(s == null) //线程1,线程2 s = new Singleton(); return s; }}
懒汉式在多线程使用时有安全隐患,有可能创建出多个对象出来。所以开发一般用饿汉式,面试一般是懒汉式。
饿汉式和懒汉式的区别
1,饿汉式是空间换时间,懒汉式是时间换空间
2,在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象
来看一下使用情况:一个国家只能有一位总统(可能在正常情况下)。所以不管任何时候我们需要一位总统,使用AmericaPresident就能返回一个。getPresident()方法将确保只有一个总统对象被创建。否者,就不妙了。
类图
public class AmericaPresident { private AmericaPresident() {} private static final AmericaPresident thePresident=new AmericaPresident(); public static AmericaPresident getPresident(){ return thePresident; }}
阅读全文
0 0
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式~~~~~~~~~~
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- i++和++i
- 数据库索引
- Batch Normalization笔记
- Day 9 linux基础 samba及Nginx服务
- MapReduce实例----单表关联
- 设计模式
- Ubuntu16.04安装x11VNC远程桌面
- 理解ROS话题(六)
- Combination and Permutation
- Linux 内核剖析
- Android性能优化之避免ANR
- leofs manager(三)
- Python多线程之event
- spring是用aop:before报错解决方法