写点什么

第二周学习总结

用户头像
张健
关注
发布于: 2020 年 06 月 17 日
第二周学习总结



5大设计原则



5个设计原则,包括,单一职责、开闭、里式替换、接口隔离以及依赖反转,简称SOLID。

1.单一职责原则

单一职责原则(SRP) single Responsibility Principle:一个类或者模块只完成一个职责或者功能。不同理解的解读: 

  • 把模块看着比类更加抽象的概念,类也可以看成模块

  • 把模块看作比类更加粗粒度的代码块,模块中包含多个类,多个类组成一个模块



        一个类只负责完成一个职责或者功能,不要设计大而全的类,要设计粒度小、功能单一个类。单一职责的目的:实现高内聚、低耦合,提供代码的复用性、可读性、可维护性。而实际上:要根据应用场景去设计单一职责类,不要过度设计,先设计粗粒度类,再进行持续重构。



  • 类中代码行数、函数、属性过多,影响代码的可读性和可维护性

  • 类依赖的其他类过多,或者依赖类的其他类的过多,不符合高内聚、低耦合的设计思想

  • 私有方法过多

  • 比较难给类起一个合适的名字,很难用一个业务名词概况

  • 类中的大量方法都是集中操作类中的某一个属性



2.开闭原则

开闭原则(OCP) open Closed Principle 。 软件实体(模块、类、方法等)应该对扩展开放、对修改关闭(重要)



解读:添加一个新的功能应该是 在应有代码的基础上扩展代码(新增模块、类、方法),而非修改已有的代码(修改模块、类、方法)。核心代码、复杂逻辑代码满足开闭原则,不是杜绝修改。



思想:要具备扩展、抽象、封装思想。



写出”对扩展开放、对修改关闭“的代码的关键:预留扩展点。对扩展开发是为了 应对变化的需求,对修改关闭是为了保证已有代码的稳定性。最终结果是让系统更有弹性。

3.里式替换原则



里式替换原则(LSP) Liskov Substitution Principe :子类对象能够替换父类对象出现的任何地方,并且保证原来的逻辑行为不变,以及正确性不被破坏



和多态的区别:多态,子类可以修改原有的逻辑,但是里式替换不可以



里式替换可以落地的描述:Design By Contract 按照协议来设计



那些代码违背LSP?

  • 子类违背父类声明要实现的功能

  • 子类违背父类对输出、输入、异常的约定

  • 子类违背父类注释中所罗列的任何特殊说明



里式替换就是子类完美继承父类的设计初衷,并做代码增强。

4.接口隔离原则



接口隔离原则(ISP) Interface Segregation Principe 客户端不应该被强迫依赖它不需要的接口。



5.依赖反转原则



依赖反转原则(DIP) Dependency Inversion Principe  高层模块不要依赖低层模块。 高低模块应该抽象来互相依赖,抽象不要依赖具体实现细节,具体实现细节依赖抽象。



IOC 控制反转 这里的控制 是指对程序执行的流程的控制, 反转是指控制转给了框架。是一种设计思想



DI 依赖注入 Dependency Injection ,不通过new 的方式在内部创建,而是外部创建好,再通过构造函数或者函数参数的方式注入。是一种编码技巧



发布于: 2020 年 06 月 17 日阅读数: 41
用户头像

张健

关注

还未添加个人签名 2018.04.20 加入

还未添加个人简介

评论

发布
暂无评论
第二周学习总结