一、设计模式:简单来说即“套路”;
二、单例模式:类的单例模式,就是采取一定的方法,保证整个软件系统中,对某个类智能存在一个对象实例;
如何实现:饿汉式 vs 懒汉式
饿汉式:当程序未调用时,就创建好了实例;
懒汉式:什么时候调用对象,什么时候创建;
三、区分饿汉式 和 懒汉式?
饿汉式:坏处:导致对象加载时间过长;好处:线程安全;
懒汉式:好处:延迟加载,坏处:线程不安去;
四、应用:网站的计数器,应用程序的日志应用,数据库连接池,。。。。
看代码:
1 public class Day14Singleton14 { 2 public static void main(String[] args) { 3 Bank bank1 = Bank.getInstance(); 4 Bank bank2 = Bank.getInstance(); 5 System.out.println(bank1 == bank2); 6 7 Order11 order1 = Order11.getInstance(); 8 Order11 order2 = Order11.getInstance(); 9 System.out.println(order1 == order2); 10 } 11 } 12 13 //单例模式的饿汉式 14 class Bank{ 15 //1.私有化构造器; 16 private Bank() { 17 18 } 19 //内部创建类的对象 20 //要求此对象是静态的;这里对象还没有调用就创建了对象 21 private static Bank instance = new Bank(); 22 //提供公共的静态方法,返回类的对象 23 public static Bank getInstance() { 24 return instance; 25 } 26 } 27 //单例模式的饿汉式 28 class Bank1{ 29 //1.私有化构造器; 30 private Bank1() { 31 32 } 33 //内部创建类的对象 34 //要求此对象是静态 final:防止用户恶意更改实例;这里对象还没有调用就创建了对象; 35 private static final Bank1 instance = new Bank1(); 36 37 } 38 39 40 //单例模式的懒汉式实现 41 class Order11{ 42 //1.私有化构造器; 43 private Order11() { 44 45 } 46 //声明当前类对象,没有初始化 47 //要求此对象是静态的;这里没有创建对象 48 private static Order11 instance = null; 49 //提供公共的静态方法,返回类的对象,调用getInstance时,才创建对象; 50 public static Order11 getInstance() { 51 if(instance == null) { 52 instance = new Order11(); 53 return instance; 54 } 55 return instance; 56 } 57 }