就我所理解,所谓设计模式,就是集众多优点于一身的最优解决方案。简单的说就是解决某一类问题的最行之有效的方法。java语言中过共有23中设计模式。
所谓单例模式,就是保证一个类中只有一个对象。其具体步骤如下:
(1)禁止其他程序建立对象:将构造函数私有化
(2)为让其他程序访问该对象,在本类中自定义对象:在类中创建对象
(3)为使其他程序访问本类对象,则对外提供访问方法
饿汉式:在一初始化时就新建对象。
class Single{
private Single ( ) { }
private static final Single s = new Single();
public static Single getInstance() {
return s;
}
}
懒汉式:延时加载
class Single {
private Single ( ) { }
private static Single s = null;
public static Single getInstance(){
if (s==null){
s = new Single();
}
return s;
}
}
在懒汉式设计模式的使用时,并没有初始化新建对象,而是赋为null,那么在调用方法时,传入一个A,进行判断,若不为null,则新建对象,否则返回 A。若再传入一个B,判断不为null,又新建一个对象,那么此时,该类中就存在两个对象,不能保证对象的唯一性。所以,为保证安全,要对存入的数据进行 限制:加锁。
加锁有两种方式(对于这个情况):在函数中加锁和在方法中加入同步代码块。在函数中加锁比较低效,所以使用在方法中加入同步代码块,再加入一个判断,双重判断可以解决低效的问题。
class Single {
private Single ( ) { }
private static Single s = null;
public static Single getInstance(){
if (s == null)
//同步代码块
synchronized (Single.class) {
if ( s==null ){
s = new Single();
}
}
return s;
}
}
分享到:
相关推荐
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马QT讲义,适合QT入门,使用,教程很比较基础,新手可以看看,另外视频链接在哔哩哔哩中。
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc
黑马程序员 - 毕向东 - Java基础教学 - 第02天 个人观看视频总结文档
黑马程序员-java32期培训视频(基础+就业)黑马程序员-java32期培训视频(基础+就业)
黑马程序员 - Java基础教学 - 04 - 数组、进制转换、二维数组
黑马程序员 - 毕向东 - Java基础教学 - 第01天 个人观看视频总结文档
黑马程序员-梅兰商城项目实战,包含图片素材和编写源码。
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 ...
C++黑马程序员-演讲比赛流程管理系统记录
黑马程序员 - Java基础教学 - 03 - 变量的作用域、for循环、break、continue、内存结构
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
黑马程序员--毕向东全套Java视屏,讲解的相当全面,各位如果需要,尽快下载哦! 另外如果视频链接存在打不开的问题,请留言,必定及时更新链接。
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490901
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490903
黑马程序员 - Java基础教学 - 06 - 面向对象(2) - 关于静态static的那些事.doc
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490899
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490705