Java知识框架 - 设计模式

  • SOLID

    • 单一职责原则 - 一个类只负责一个职责 - 方法级别做单一职责也是OK的
    • 开放封闭原则 - 类对提供方扩展开放,对使用方修改关闭
    • 里式替换原则 - 继承需要注意什么问题和遵守什么原则
    • 接口隔离原则 - 客户端不应该依赖它不需要的接口
    • 依赖反转原则 - 传参是接口而不是具体实现类
  • 创建型

    • 单例模式

      • 懒汉,线程不安全


        image.png
      • 懒汉,线程安全


        image.png
      • 饿汉


        image.png
      • 饿汉,变种


        image.png
      • 静态内部类


        image.png
      • 枚举 - 享有特权的客户端可以借助AccessibleObject.setAccessible方法,通过反射机制调用私有构造器。如果需要抵御这种攻击,可以修改构造器,让它在被要求创建第二个实例的时候抛出异常。


        image.png
        • 枚举Enum是个抽象类,一旦一个类声明为枚举,实际上就是继承了Enum,所以会有(String.class,int.class)的构造器。既然是可以获取到父类Enum的构造器,反射是因为自身的类没有无参构造方法才导致的异常,并不能说单例枚举避免了反射攻击。
        • 反射在通过newInstance创建对象时,会检查该类是否ENUM修饰,如果是则抛出异常,反射失败。
      • 双重校验锁


        image.png
    • 工厂模式 - ThreadPoolExecutor


      image.png
    • 建造者模式


      image.png
  • 结构型

    • 适配器模式 - Netty - ChannelInboundHandlerAdapter&ChannelOutboundHandlerAdapter
    • 装饰模式
    • 外观模式 - Facade
  • 行为型

    • 职责链模式 - Netty - ChannelPipeline

    • 状态模式


      image.png
    • 观察者模式


      image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容