设计模型: 解决某一类问题行之有效的解决办法(思想); 共有23种,下面看一种:
单例(Singleton)设计模型:
可以保证一个类的对象唯一性。
场景:比如多个程序都要使用一个配置文件中的数据,而且要实现数据共享和交换。必须要将多个数据封装到一个对象中。而且多个程序操作的是同一个对象。也就是说必须保证这个配置文件对象的唯一性。
怎么保证对象的唯一性:
1. 一个类只要提供了构造函数,就可以产生多个对象,无法保证唯一。既然数量不可控,所以干脆不让其他程序建立对象,也就是把构造方法私有化。
2. 不让其他程序创建,对象何在?所以干脆自己在本类中创建一个对象,这样的好处是什么,可控。
3. 创建完成后,是不是要给其他程序提供访问方式。
怎么实现这个步骤:
1. 怎么不让其他程序创建对象:直接私有化构造函数,不让其他程序创建的对象初始化。
2. 直接在本类中new一个本类对象。
3. 定义一个功能,其他程序可以通过这个功能获取到本类的对象。
构造方法被私有化,就不能在其他类中new这个类的对象了,不能实例化这个类了。
单例模式分为两种,懒汉式和饿汉式。面试中用的最多的是懒汉式。开发中用的最多的是饿汉式(不浪费内存吗?不。因为不需要对象就不用加载类,加载类一定是要用对象。不管先加载还是后加载都需要这个对象)。
饿汉式:
class Single{ private static Single s = new Single(); private Single(); public static Single getInstance(){ return s; } }
懒汉式:
单例的延迟加载方式。
class Single{ private static Single s = null; private Single(); public static Single getInstance(){ if(s = null) s = new Single(); return s; } }