JAVA学习第十课(单例设计模式)
来源:互联网 发布:野兽派有淘宝店吗 编辑:程序博客网 时间:2024/05/22 06:09
杂谈:
如果一个类里的方法都是静态的,那么就没有必要创建对象,为了不让其他程序创建对象,就可以把当前类的构造函数私有化。
class MAN{private MAN(){}}
文档注释:命令:javadoc
只能解析/** 开始至 */结束的内容;/* */则不行
路径设置问题:
当要运行,两个以上路径中的class文件时,路径都要设置,命令:classpath=.;c:\myhelp或者:classpath=.;%myhelp%
清除路径: set classpath=
设计模式:对问题行之有效的解决方案
单例设计模式:
保证一个类在内存中对象的唯一性
必须对于多个程序使用同一个配置信息对象时,就要保证对象的唯一性
如何保证对象的唯一性:
1.不允许其他对象new对象
2.在该类中创建一个本类实例
3.对外提供一个方法,让其他程序可以获取该对象
步骤:
1.私有化该类的构造函数
2.通过new在本类中创建一个本类对象
3.定义一个共有的方法将创建的对象返回
import java.util.Scanner;class MAN{private static MAN jo = new MAN();//第二步//不共有,为了可控private int x = 5;private MAN()//第一步{}public static MAN Creat (String key) //第三步{if(key=="stdio")//正确就给予对象使用,否则不return jo;return null;}void show(){System.out.println("ASDf");}}public class Main{public static void main (String[] args) {//MAN SS = MAN.Creat();String key = "stdio";MAN s = MAN.Creat(key);}}
单例设计的第一种模式
//饿汉式
import java.util.Scanner;class Test{private static Test jo = new Test();//第二步,//类一加载,对象就存在//不共有,为了可控private int num;;private Test()//第一步{}public static Test Creat (String key) //第三步{if(key=="stdio")//正确就给予对象使用,否则不return jo;return null;}public void set(int num){this.num = num;}public int get() {return num;}void show(){System.out.println("ASDf");}}public class Main{public static void main (String[] args) {String key = "stdio";Test s1 = Test.Creat(key);Test s2 = Test.Creat(key);System.out.println(s1==s2);s1.set(10);s2.set(20);System.out.println(s1.get()+" "+s2.get());//20 20,因为只有一个对象}}
类中创建的对象 内存示意图:
单例设计模式的另一表现:
//懒汉式,一开始不做,真正用的时候才做,特点:延迟加载模式
class Test{private static Test s = null;//类加载进来,只有调用了Creat方法时,且符合创建条件时,才会创建对象 //也就是单例设计模式,延迟加载模式,一般考察点private int num;;private Test(){}public static Test Creat (String key) {if(key=="stdio" && s==null)s = new Test();//如果符合就给予对象使用return s;}public void set(int num){this.num = num;}public int get() {return num;}void show(){System.out.println("ASDf");}}public class Main{public static void main (String[] args) {String key = "stdio";Test s1 = Test.Creat(key);Test s2 = Test.Creat(key);System.out.println(s1==s2);}}
PS:懒汉式存在一些隐患,如果被多线程技术所操纵时,并发访问,有可能导致无法保证对象的唯一性,当改到保证唯一性时,效率会降低
面试时,一般会面试 懒汉式
开发时,用 饿汉式
0 0
- JAVA学习第十课(单例设计模式)
- 第十课 单例设计模式
- java设计模式学习-单例模式
- java 设计模式 学习笔记(16) 单例模式
- java设计模式学习(四):单例模式
- 设计模式学习笔记---单例模式(Java版)
- java设计模式学习 ----- 单例模式(Singleton)
- 设计模式学习(Java)——单例模式
- java-单例设计模式学习
- JAVA学习九:单例设计模式
- java学习07-单例设计模式
- Java学习--单例设计模式
- java学习--单例设计模式
- 个人学习-java-单例设计模式
- Java学习7:单例设计模式
- java日常学习:单例设计模式
- Java设计模式之单例设计模式学习
- Java学习笔记 - 单例设计模式 (一)
- poj_2752 Seek the Name, Seek the Fame
- AT&T 和 Intel 汇编语法的主要区别
- 海量数据处理 百度面试题 从40亿IP地址中取出出现次数最多的那个IP地址,我的解法
- A simple to "path" ElasticNet parameters ( in python)
- oracle的事务隔离级别。
- JAVA学习第十课(单例设计模式)
- synchronized和LOCK的实现
- 数字哑谜和回文
- 设计模式C++练习(1)_工厂模式
- java实现两个栈模拟实现队列出队
- atoi
- KMP算法分析
- hdu 5008(2014 ACM/ICPC Asia Regional Xi'an Online ) Boring String Problem(后缀数组&二分)
- 我的编程学习日志(3)--教你简单的理解数组和指针(对指针概念还模糊的看过来)