3-4懒汉式
public class Emperor { //定义私有构造方法 private Emperor(){ } //定义私有静态类对象 private static Emperor king==null; //定义公有静态方法返回类内的私有静态对象 public static Emperor getKing(){ if(king==null) king = new Emperor(); return king; } }
public class Test { public static void main(String[] args) { System.out.println("创建1号皇帝对象"); Emperor one=Emperor.getKing(); System.out.println("创建2号皇帝对象"); Emperor two=Emperor.getKing(); System.out.println("创建3号皇帝对象"); Emperor three=Emperor.getKing(); System.out.println("三个皇帝对象依次是:"); System.out.println(one); System.out.println(two); System.out.println(three); } }
老师你好 懒汉式的方法我怎么没看懂呢?
代码需要优化吗
懒汉式就比饿汉式多了一个判断条件 是实例化的位置不同吗 懒汉是在获取的时候获得?
这两种方法仅仅是为了看是否共用一块地址吗?我不太理解这个练习的点在哪 是为了帮助熟悉这种模式的书写吗?
我咋混了 这个方法主要做什么的 ?这是不是只要单纯记忆这种创建模式就行 具体在哪应用呢?
正在回答
你好!下面分别回答你的四个问题:
1、首先说一下代码中的编译错误,如下所示,==应改为=,=是赋值符号,表示将null赋值给king。其他代码没有问题,符合作业要求,不需要优化。
2、是实例化的时间不同,饿汉式是类加载的时候实例化,而懒汉式是使用的时候实例化。其实不止多了个判断条件,如下选中的代码,实例化对象的书写位置是不同的。
3、对于单例模式来说,都是只能获取一个对象。这两个练习题是为了让大家熟悉懒汉式和饿汉式写法的不同,在了解写法的同时,也要理解他们实例化对象的时间是不同的。
4、同学说的"这个方法"指的是什么?除了记忆懒汉式和饿汉式创建的代码,还要知道这么做的含义,以及什么时候加载。关于应用,主要用在只需要一个对象,并且该对象是唯一的这样的场景下。比如老师在2-1中介绍的打印机程序,还有我们练习中的国王。在当前阶段,同学可以先记住这些内容,在以后的框架学习中,还会看到单例模式的使用。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星