每日一档之设计模式(1)

83 阅读1分钟

目录

门面模式-调停者模式

使用的应用:MQ,消息中间件,为了解藕

工厂模式

形容词用接口,名词用抽象类
  • 简单工厂
  • 静态工厂(可以把单例模式认为是)
  • 工厂方法
    • 产品维度扩展
  • 抽象工厂
    • 产品一族扩展
  • spring的IOC
    • 通过xml配置,生成bean实例
    IOC: 控制反转 / DI依赖注入
    

策略模式

  • 接口
    • Comparable(compareTo方法)
    • Comparator(策略模式,实现java.lang的接口)

单例模式

  • 概念
内存中只有一个实例
  • 代码版本
    • 饿汉式
    • 懒汉式(带来多线程不安全)
    • 加synchronized(安全但是效率降低)
    • DCL(new对象CPU指令重排序,要加volitale)
    • 静态内部类(JVM只会加载一次)
    public class A {
        private A() {
            
        }
        private static class AHolder {
            private final static A INSTANCE = new A();
        }
        public static getInstance() {
            return AHolder.INSTANCE;
        }
    }
    
    • 枚举单例
    public enum A {
        INSTANCE;
    }
    
    解决线程同步,还有反序列化后生成不了实例(原因是枚举没有构造方法,反射获取不了)
    
    • spring的bean工厂