7.JAVA基础复习——JAVA中的设计模式单例模式

时间:2022-03-14 04:07:43

设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

总体来说设计模式分为23种三大类:

  创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

  结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

  行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

单例模式:类在内存中只有一个对象实例。

  单例模式有两种实现方式:

    饿汉式:类加载时创建对象

    懒汉式:当需要实例对象时才创建对象(延迟加载)

代码:

 public class Single {
/*单例模式:类在内存中只有一个对象实例。有两种方式实现
*实现细节:
* 1.不让创建对象由我们来创建对象(私有化构造:不可创建对象。私有化实例:不可访问此对象。)
* 2.定义一个方法用来获取实例对象。
* 4.静态变量会在类加载时执行所以堆内存中存在Single()对象。
* 5.程序会先从栈中找如果没有去堆中寻找对象。
* 6.堆内存中有此对象所以会返回此对象。
* 7.第二次调用时同理会返回此对象所以指向的是同一个对象
*/
//单例模式饿汉式:类加载时就创建实例对象
private static Single s = new Single();
public static Single getSingle(){
return s;
}
//私有化构造不让创建对象
private Single(){} /*单例模式:类在内存中只有一个对象实例。
*实现细节:
* 1.不让别创建对象由我们来创建对象(私有化构造:不可创建对象。私有化实例:不可访问此对象。)
* 2.定义一个方法用来获取实例对象。
* 4.静态变量会在类加载时执行此处为空没由创建实例对象
* 5.程序会先从栈中找如果没有去堆中寻找对象。
* 6.堆内存中没有此对象所以会先创建实例对象然后返回
* 7.当第二次调用时因为堆内存中有了此对象所以会直接返回所以都是指向同一个实例对象。
*/
//单例模式懒汉式:类加载时不创建对象,用到实例时才加载。
private static Single s = null;
public static Single getSingle(){
if(s==null){
s = new Single();
}
return s;
}
}