单例模式 和 静态方法 混用会如何着
单例模式 和 静态方法 混用会怎么着?
单例模式中 的方法如果写成静态方法,有问题吗?
写工具类时 看到有的老师写成单例模式, 看了一下Apache 的commons-io 中写成静态方法,
1、如果我在单例模式成写静态方法会怎么样?
2、如果只写单例模式,那同一个类里面的第二个类调用第一个类,该怎么用?
用this.方法1 还是 类名.getInstance().方法1 ?
3、如果只是静态方法,那同一个类中的静态方法怎么调用另一个静态方法?
this.方法1 ?
------解决思路----------------------
1.单例模式和静态方法不冲突,在单例模式中,除了按照要求:构造函数私有化、写一个静态方法获取实例、定义一个静态变量保存实例;其他的方法可以是静态或者实例方法,并没有限制。
2.“同一个类里面的第二个类调用第一个类”,是不是我语文没学好?同一个类怎么又有第二个类?
3.同一个类中的静态方法调用另一个静态方法,直接写方法名就好了,写this一定错,建议LZ先搞清楚this的含义:表示当前实例,而静态方法跟实例无关,仅仅是类中的方法,所以静态方法中不能出现this关键字。
------解决思路----------------------
1、如果写成静态方法就没有必要设置什么单例模式了,因为静态方法不需要有对象,而单例模式指的是一个虚拟机中只存在一个该类对象。所以写成静态方法就谈不上单例模式。
2、不懂什么意思,猜测你是说一个方法调用另一个方法,这和单例模式没有关系,如果是非静态方法就用this,如果是静态方法就用类名.
3、1楼已经说的很清楚了,我就不啰嗦了。
------解决思路----------------------
单例模式中第二个方法调用第一个方法 跟普通类中的方法调用一样。
调用getInstance 不一定会创建新的对象,首次调用才会,后面的调用只会返回已经存在的那个实例。
单例模式中的静态方法和普通类中的静态方法没有本质上的区别,都是静态方法,只是getInstance是单例模式必须的静态方法而已,其他的静态方法你可以自己定义,没有什么特殊的地方。
单例模式中 的方法如果写成静态方法,有问题吗?
写工具类时 看到有的老师写成单例模式, 看了一下Apache 的commons-io 中写成静态方法,
1、如果我在单例模式成写静态方法会怎么样?
2、如果只写单例模式,那同一个类里面的第二个类调用第一个类,该怎么用?
用this.方法1 还是 类名.getInstance().方法1 ?
3、如果只是静态方法,那同一个类中的静态方法怎么调用另一个静态方法?
this.方法1 ?
------解决思路----------------------
1.单例模式和静态方法不冲突,在单例模式中,除了按照要求:构造函数私有化、写一个静态方法获取实例、定义一个静态变量保存实例;其他的方法可以是静态或者实例方法,并没有限制。
2.“同一个类里面的第二个类调用第一个类”,是不是我语文没学好?同一个类怎么又有第二个类?
3.同一个类中的静态方法调用另一个静态方法,直接写方法名就好了,写this一定错,建议LZ先搞清楚this的含义:表示当前实例,而静态方法跟实例无关,仅仅是类中的方法,所以静态方法中不能出现this关键字。
------解决思路----------------------
1、如果写成静态方法就没有必要设置什么单例模式了,因为静态方法不需要有对象,而单例模式指的是一个虚拟机中只存在一个该类对象。所以写成静态方法就谈不上单例模式。
2、不懂什么意思,猜测你是说一个方法调用另一个方法,这和单例模式没有关系,如果是非静态方法就用this,如果是静态方法就用类名.
3、1楼已经说的很清楚了,我就不啰嗦了。
------解决思路----------------------
单例模式中第二个方法调用第一个方法 跟普通类中的方法调用一样。
调用getInstance 不一定会创建新的对象,首次调用才会,后面的调用只会返回已经存在的那个实例。
单例模式中的静态方法和普通类中的静态方法没有本质上的区别,都是静态方法,只是getInstance是单例模式必须的静态方法而已,其他的静态方法你可以自己定义,没有什么特殊的地方。