ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

设计原则和思想:设计原则

2022-06-27 14:02:21  阅读:160  来源: 互联网

标签:依赖 思想 Tomcat 反转 代码 原则 模块 设计


SOLID原则:单一原则、开闭原则、里氏替换原则、接口隔离原则、依赖反转原则

单一原则

描述对象是类或模块,要保证职责足够单一,也就是围绕一个对象进行描述。

我们可以先写一个粗粒度的类,满足业务需求,随着业务的发展,如果粗粒度的类越来越庞大,代码越来越多,这个时候,我们可以将这个粗粒度的类拆分成几个更细粒度的类。这就是所谓的重构。

何时需要拆分,有如下参考条件:

  • 类中行数,函数,属性过多,影响到了代码的可读性、可维护性时。
  • 类依赖的其他类过多,或者依赖类的其他类过多,不符合高内聚低耦合的设计思想时。
  • 私有方法过多时,我们需要考虑是否将私有方法独立到新的类中并设置为public,供更多类使用,提高代码复用性。
  • 比较难给类起一个合适的名字,很难用一个业务名词概括,或者只能用一些笼统的Manager、Context之类的词语进行命名,这就说明类的职责定义个可能不够清晰明确。
  • 类中大量的方法都集中操作某几个属性,那几可以考虑将这几个属性和对应方法拆分成新的类。

开闭原则

增加一个新的功能时,应该在已有代码基础上新增模块、类、方法,而不是修复以后代码,对扩展开放,对修改关闭。

这是代码可扩展性的重要表现。需要我们时刻拥有扩展意识,抽象意识,封装意识

最常用来提高代码扩展性的方法有:多态、依赖注入、基于接口而非实现编程,以及大部分的设计模式(比如,装饰、策略、模板、职责链、状态等)。要为未来修改留好扩展点。

同时要注意代码的可扩展性和可读性是冲突的。

里氏替换原则

子类对象能够替换程序中父类对象出现的任何地方,并保证程序原有的逻辑行为不变、正确性不被破坏。

该原则用来指导继承关系中子类应该如何设计,子类的设计要保证其在替换父类的时候不改变原有的逻辑行为,不破坏正确性。

接口隔离原则

接口的使用者不应该被强迫依赖它不需要的接口。

依赖反转原则

控制反转(IOC):”控制“:程序执行流程的控制,”反转“:把程序的执行控制从程序员手中转移到框架中。是一种设计思想,Spring的控制反转是通过依赖注入实现的。

依赖注入(DI):不在内部new对象,而是在外部创建好对象,再通过构造函数、函数参数等方式传递(注入)给类使用。

依赖反转(DIP):又叫依赖倒置。高层模块不依赖底层模块,高层模块和底层模块应该通过抽象来互相依赖。除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象。在平时的业务代码开发中,高层模块依赖底层模块是没有任何问题的。实际上,这条原则主要还是用来指导框架层面的设计,跟前面讲到的控制反转类似。拿 Tomcat 这个 Servlet 容器作为例子。

Tomcat 是运行 Java Web 应用程序的容器。我们编写的 Web 应用程序代码只需要部署在 Tomcat 容器下,便可以被 Tomcat 容器调用执行。按照之前的划分原则,Tomcat 就是高层模块,我们编写的 Web 应用程序代码就是低层模块。Tomcat 和应用程序代码之间并没有直接的依赖关系,两者都依赖同一个“抽象”,也就是 Servlet 规范。Servlet 规范不依赖具体的 Tomcat 容器和应用程序的实现细节,而 Tomcat 容器和应用程序依赖 Servlet 规范。

标签:依赖,思想,Tomcat,反转,代码,原则,模块,设计
来源: https://www.cnblogs.com/xcgShare/p/16415267.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有