理解:单例模式下,对象在程序加载或者第一次使用便被初始化,成为唯一全局变量,在单线程或者多线程情况下,所有线程取到单例对象都是相同,若对单例对象进行修改,在其他线程下对于单例对象也是同样变化的。
    没有理解错误的话,在springboot容器启动时,spring容器对象是单例的,我们可以通过单例spring容器来获取容器内部的各自对象和监听事件,在比如我们历史上大部分时间皇帝都是单例唯一的,故此在程序上设计如下,在皇帝对象构造方法是private私有化的,同时创建单例构造方法在首次使用时候初始化,但是在多线程模式下可能会实例化多个,故此可以使用静态块在程序加载便初始化单例对象(饿汉式)。
    注意:synchronized同步关键词,线程安全;单例模式,可节约CPU和内存;三层模式下的service和dao;

    1. public class Emperor {
    2. private static Emperor emperor = null;
    3. private Emperor() {
    4. }
    5. //懒汉式
    6. public static Emperor getInstance() {
    7. if(emperor == null) {
    8. emperor = new Emperor();
    9. }
    10. return emperor;
    11. }
    12. public static void emperorInfo(){
    13. System.out.println("我是单例皇帝");
    14. }
    15. }
    1. public class TestSingleton {
    2. private static Emperor emperor;
    3. public static void main(String[] args) {
    4. emperor = emperor.getInstance();
    5. emperor.emperorInfo();
    6. }
    7. }