java学习第五篇---单例设计模式
来源:互联网 发布:容易猝死的职业知乎 编辑:程序博客网 时间:2024/06/06 07:19
虽然进度很慢,但如果能把自己学的每个东西都吃透也算是值得了。加油,加油,加油!
设计模式:解决某一类问题,最行之有效的方法,java中有23中设计模式。
单例设计模式:解决一个类在内存中只存在一个对象的问题。
想要保证对象唯一:1)为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
2)还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象
3)为了方便其他程序对自定义对象的访问,可以提供一些访问方式。
代码体现:
1)将所有构造函数私有化,这样可禁止其他程序建立对象
2)在类中创建本来对象
3)提供一个可以获取该对象的方法,又因为该类不能创建对象,要访问类中方法只能采用“类名.方法名”的方式,因此此时方法要设成静态的。又因为静态方法中不能引用非静态变量,所以上面创建对象时也要设成静态的。
class Student{private Student(){} // 构造函数私有化private static Student st = new Student(); // 创建private属性的对象
<span style="white-space:pre"></span>//可以获取对象的静态方法public static Student getInstance() {return st;}private int age;public void setAge(int age){this.age = age; }public int getAge(){return age;}}class SingleDemo{public static void main(String[] args){
//实验确定ss和ss2是指向同一个对象的
Student ss = Student.getInstance();Student ss2 = Student.getInstance();ss.setAge(35);System.out.println(ss2.getAge());}}注意:单利设计模式存在饱汉式和饿汉式两种方式,上面介绍的是饿汉式,也是平时最常用的一种方式。饱汉式的设计方式是:
class Single{private static Single s = null;private Single(){}public static Single getInstance(){if(s==null){
<span style="white-space:pre"></span>synchronized(Single.class)
<span style="white-space:pre"></span>{
<span style="white-space:pre"></span>if(s==null){
<span style="white-space:pre"></span>s = new Single():
<span style="white-space:pre"></span> <span style="white-space:pre"></span>}
<span style="font-family: Arial, Helvetica, sans-serif;"></span><span style="font-family: Arial, Helvetica, sans-serif;">}</span>
<span style="white-space:pre"></span>}return s;}}这里多了一个对对象是否创建的判断,代码稍显复杂。所以最常用的还是饿汉式。
之前用到过多线程就一直没搞懂这个异步操作,今天算是有一些明白了,简要介绍下synchronized。这其实就是一个锁,被他修饰的代码块只能同时被一个程序访问。即,每个程序执行到synchronized(Single.class)关键字时会先判断,下面是否有程序正在执行代码块内内容,如果有则后面的程序不能进入执行,只能等上一个执行完了才可以进入执行。
0 0
- java学习第五篇---单例设计模式
- java设计模式学习-单例模式
- 设计模式学习笔记(Java篇)之单例模式
- java-单例设计模式学习
- JAVA学习九:单例设计模式
- java学习07-单例设计模式
- Java学习--单例设计模式
- java学习--单例设计模式
- 个人学习-java-单例设计模式
- Java学习7:单例设计模式
- java日常学习:单例设计模式
- Java设计模式之单例设计模式学习
- java学习基础篇(十)单例设计模式
- 菜鸟java学习第三篇 单例设计模式
- java设计模式---单例模式篇
- Java菜鸟学习笔记--设计模式篇(一):Singleton Pattern(单例设计模式)
- java设计模式学习系列之一:单例模式(Singleton)
- java设计模式学习系列之一:单例模式(Singleton)
- EL表达式总结
- JS命名规范
- sql server的一些常用 sql 语句
- Android的Notification应用详解和PendingIntent的初步剖解
- Linux下history命令用法
- java学习第五篇---单例设计模式
- vim中设置自动缩进
- 使用RelativeLayout时,android:layout_toEndOf="@/id/xxxx",还是"@+id/xxxx"
- laravel 中 IOC容器与依赖注入小demo
- c++ string问题 cout输出正常,printf输出乱码
- Web
- VS2010 C++ 操作Excel表格的编程实现
- LRU缓存原理
- 将时间戳装换为时间&&将时间装换为几天前