前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式总结

设计模式总结

作者头像
老梁
发布2019-09-10 18:32:05
3640
发布2019-09-10 18:32:05
举报

1. 设计模式总结

1.1. SOLID原则

1.1.1. 单一责任原则(SRP)

  1. 当修改某个类的时候,原因有且只有一个,也就是让一个类只做一种类型责任

1.1.2. 开放封闭原则(OCP)

  1. 软件实体应该是可扩展但不可修改的

1.1.3. 里氏替换原则(LSP)

  1. 子类实例应该能够替换任何其超类的实例

1.1.4. 接口分离原则(ISP)

  1. 使用多个专门的接口比使用一个大接口要好,减少其依赖性

1.1.5. 依赖注入或倒置原则(DIP)

  1. 高层模块不应该依赖底层模块,二者都应该依赖于抽象
  2. 抽象不应该依赖于具体实现,具体实现应该依赖于抽象

1.2. 简单工厂模式

  1. 违反了开放封闭原则,扩展需要修改工厂类

1.3. 工厂模式

1.4. 抽象工厂

  1. 创建工厂的工厂

1.5. 三种工厂方式的区别

  1. 简单工厂,在工厂内部创建不同的产品,不符合5大设计原则中的开闭原则
  2. 工厂模式设计上每一产品都有自己的工厂,每创建一个产品需要创建它的工厂实现和产品实现,但耦合度降低,易于扩展
  3. 抽象工厂,是创建工厂的工厂,工厂和他的不同实现类都有自己的抽象接口,进一步降低了耦合度

1.6. 单例模式

1.6.1. 防止反射创建打破单例

  1. 在创建实例的时候抛异常

1.6.2. 防止反序列化的创建方式

代码语言:javascript
复制
public class DemoSingleton implements Serializable {
    private static final long serialVersionUID = -7604766932017737115L;
    
    private static class LazyHolder{
        private static final DemoSingleton INSTANCE = new DemoSingleton();
    }
    
    public static DemoSingleton getInstance(){
        return LazyHolder.INSTANCE;
    }

    // 确保反序列化单例
    protected Object readResolve() {
        return getInstance();
    }
}

1.7. 建造者模式

  1. 复杂流程的构建
  2. 多步构造流程/算法
  3. 构造类似种类产品,构造流程相同,表示不同
  4. 构造和表示分离

1.8. 流畅接口模式Fluent interface

  1. 构造方法,显微镜构造方式,多种构造函数
  2. javaBean构造方式,使用set方式注入参数,状态可变不安全
  3. 流畅接口
  1. 只有get方法,没有set,保证了不可变性,属性final修饰,必须在构造函数中初始化
  1. 每个设置都返回自身进行参数构建,最后build进行产品构建

1.8.1. 好处

  1. 参数组合更灵活
  2. 参数设置直观表意
  3. 一个构造器实例可以构造多个对象表示
  4. 构造出不可变对象(immutable objects)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 设计模式总结
    • 1.1. SOLID原则
      • 1.1.1. 单一责任原则(SRP)
      • 1.1.2. 开放封闭原则(OCP)
      • 1.1.3. 里氏替换原则(LSP)
      • 1.1.4. 接口分离原则(ISP)
      • 1.1.5. 依赖注入或倒置原则(DIP)
    • 1.2. 简单工厂模式
      • 1.3. 工厂模式
        • 1.4. 抽象工厂
          • 1.5. 三种工厂方式的区别
            • 1.6. 单例模式
              • 1.6.1. 防止反射创建打破单例
              • 1.6.2. 防止反序列化的创建方式
            • 1.7. 建造者模式
              • 1.8. 流畅接口模式Fluent interface
                • 1.8.1. 好处
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档