13-1 面向对象 设计模式1 单例设计模式
来源:互联网 发布:suse linux 安装mysql 编辑:程序博客网 时间:2024/06/05 11:37
两种:懒汉式和饿汉式
设计模式:一种思路
设计模式一共有23种我们学过3种:单例装饰 模板
单例解决的问题是:在内存中只存在一个对象(相当于共享文件)
有两种是实现方式:
懒汉式(延后创建对象)饿汉式(提前创建对象)
我的代码(两种放到一个文件中)
class SingleDemoPractise1
{
publicstatic void main(String[] args)
{
Person1p1 = Person1.getInstance();
Person2p2 = Person2.getInstance();
}
}
class Person1 //懒汉式
{
privatestatic Person1 p = null;
privatePerson1(){}
publicstatic Person1 getInstance()
{
if(p == null)
p= new Person1() ;
returnp;
}
}
class Person2 //饿汉式
{
privatestatic Person2 p = new Person2();
privatePerson2(){}
publicstatic Person2 getInstance()
{
returnp ;
}
}
注意:
使用懒汉式的时候容易出现同步的安全问题
问题出现在if(p==null)这句判断后
如果有多于一个的线程执行完了这句话挂起
则会在内存中创建多个对象与单例设计的初衷不符
因此使用同步技术来改善
具体方法就是使用synchronized 锁
class Person1 //懒汉式
{
privatestatic Person1 p = null;
privatePerson1(){}
publicstatic Person1 getInstance()
{
If(p== null)
{
Synchronized(Person.class)//这里的锁是字节码文件 字节码文件本身也是对象//所以可以充当这个角色
{
if (p == null)
p = new Person1() ;
}
return p;
}
}
}
这是一种提高效率的锁原理是:判断锁比判断空要花时间
当第三个甚至更后面的线程要进来的时候就只判断空 不判断锁了
- 13-1 面向对象 设计模式1 单例设计模式
- 面向对象设计模式--单例模式
- javaSE-面向对象-单例设计模式
- 面向对象之单例设计模式
- Java面向对象-单例设计模式
- Java面向对象,单例设计模式
- 面向对象-单例设计模式
- 面向对象 单例设计模式
- 面向对象设计模式之Singleton单例模式
- 【面向对象】——设计模式之单例模式
- day03--面向对象--设计模式之单例模式
- 面向对象的设计模式(一),单例模式
- 04-面向对象(单例设计模式-概述&体现).1 04-面向对象(单例设计模式-概述&体现).2 04-面向对象(单例设计模式-概述&体现).3
- 模式设计1--单例设计模式
- 【设计模式】## 1、单例设计模式 ##
- 设计模式(一) 面向对象设计模式与原则(1)
- 黑马程序员_面向对象1_(封装、构造函数、this、static、单例设计模式)
- 黑马程序员-面向对象之单例设计模式
- 架构师学习之路1设计模式
- [Socket]BSD socket简易入门
- cordova 混合开发
- 映射网络驱动器
- ERROR 1130 (HY000): Host '10.117.1.13' is not allowed to connect to this MySQL server
- 13-1 面向对象 设计模式1 单例设计模式
- cocos2dx_3.x 本地文件读写
- JS更换图片
- 获取每个卡的运营商名称
- [Win32SDK基本]Button Control(2)Check Boxes
- Kafka Producer
- MySQL的备份与还原
- [Android] BroadcastReceiver - 廣播接收器
- 14 面向对象 继承