package com.atguigu.java2;
/**
* 一、设计模式:
* 1.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式
* 2.总结归纳出经典的23种设计模式。
*
* 二、单例设计模式(掌握)
* 1.解决的问题:保证在整个软件系统中,只提供当前类的一个实例
* 2.如何实现:①饿汉式(如下的4步) ②懒汉式
* 3.对比两种实现方式?
* 饿汉式:不存在线程安全问题。
* 懒汉式:延迟对象的创建,节省内存空间。存在线程安全问题的。
*
*
* 三、面试题:单例设计模式的实现。
*
* @author shkstart 邮箱:shkstart@126.com
* @version 创建时间:2017年7月28日 下午4:19:24
*
*/
public class SingletonTest1 {
public static void main(String[] args) {
// Bank bank1 = new Bank();
// Bank bank2 = new Bank();
Bank bank1 = Bank.getInstance();
Bank bank2 = Bank.getInstance();
System.out.println(bank1 == bank2);
}
}
//饿汉式
class Bank{
//1.私有化构造器
private Bank(){}
//2.内部提供一个当前类的实例
//4.此实例也必须静态化
private static Bank bank = new Bank();
//3.提供公共的静态的方法,返回当前类的对象
public static Bank getInstance(){
return bank;
}
}
package com.atguigu.java2;
public class SingletoTest2 {
public static void main(String[] args) {
Bank1 bank1 = Bank1.getInstance();
Bank1 bank2 = Bank1.getInstance();
System.out.println(bank1 == bank2);
}
}
//懒汉式:
class Bank1{
//1.私有化构造器
private Bank1(){}
//2.声明当前类的实例
//4.此实例也必须静态化
private static Bank1 bank = null;
//3.提供公共的方法获取当前类的实例
public static Bank1 getInstance(){
if(bank == null){
synchronized(Bank1.class){
if(bank == null){
bank = new Bank1();}
}
}
return bank;
}
}