一、设计模式的含义
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
二、单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例,即一个类只有一个对象实例。
三、我的理解(如果理解有误欢迎在评论里指正)
1.假设一个class文件中有三个类,A类、B类、C类。其中C类中的代码如下:
class C {
private int i;
private int j;
i=1;
j=2;
}
2.那么现在如果想要在A类里面使用“i”这个变量并且还要改变“i”的值就要对C类进行实例化然后对“i”重新赋值。
具体代码:C c = new C;
c.i = 4;
3.接下来如果在B类中在对C类的“i”进行调用输出的结果会是什么呢?
具体代码:C c = new C;
system.out.println(c.i);
实验之后结果输出1,两次的值是不一样的,A改变的值并没有影响C类中的原来设置的值,所以可以得出结论C类在两次调用的过程中被new了两次。那么如果想要实现在A类中设置i= 4之后在B中调用时候也是i= 4呢?其实有一种方法那就是把C中的变量都设置成静态的,但是我们都知道静态数据的生命周期是很长的,假如C中有很多数据时,如果将其全部设成静态的,那将是对内存的极大损耗,所以全部设置成静态虽然可行但并不是一个很好的解决方法。但仔细想一下只要能够保持对象的单一就能够实现我们想要的那种效果呀,而单例模式恰恰就是这样的。
四、单例模式的设计思想
1、在上面我们说到现在解决问题的关键就是保证在应用中只有一个对象就行了,那么怎么保证只有一个对象呢?
其实只需要三步就可以保证对象的唯一性
(1)不允许其他程序用new对象。因为new就是开辟新的空间,在这里更改数据只是更改的所创建的对象的数据,如果可以new 的话,每一次new都产生一 个对象,这样肯定保证不了对象的唯一性
(2)在该类中创建对象。因为不允许其他程序new对象,所以这里的对象需要在本类中new出来
(3)对外提供一个可以让其他程序获取该对象的方法。因为对象是在本类中创建的,所以需要提供一个方法让其它的类获取这个 对象。
2、那么这三步怎么用代码实现呢?将上述三步转换成代码描述是这样的
(1)私有化该类的构造函数
(2)通过new在本类中创建一个本类对象
(3)定义一个公有的方法,将在该类中所创建的对象返回