首页 > 其他分享 >软件设计七项原则

软件设计七项原则

时间:2023-07-19 11:12:15浏览次数:36  
标签:原则 软件设计 继承 复用 接口 实现 七项 父类

一、软件设计七项原则

  1. 总结归纳
设计原则 归纳总结
开闭原则 对扩展开放,对修改关闭
里氏替换原则 不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义
依赖倒置原则 高层不应该依赖低层,要面向接口编程
单一职责原则 一个类只干一件事,实现类要单一
接口隔离原则 一个接口只干一件事,接口要精简单一
迪米特法则 不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度
合成复用原则 尽量使用组合或者聚合关系实现代码复用,少使用继承
  1. 软件设计原则详细解释
    1. 开闭原则(扩展)
      • 定义:软件实体应当对扩展开放,对修改关闭
      • 含义:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求
      • 实现方式:通过“抽象约束、封装变化”可以实现;通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中
    2. 里氏替换原则(继承)
      • 定义:不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义
      • 含义:继承必须确保超类所拥有的性质在子类中仍然成立
      • 实现方式:子类可以扩展父类的功能,但不能改变父类原有的功能;即子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法
    3. 依赖倒置原则(接口)
      • 定义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象
      • 含义:要面向接口(抽象)编程,不要面向实现编程。
      • 实现方式:每个类尽量提供接口或抽象类,或者两者都具备;变量的声明类型尽量是接口或者是抽象类;任何类都不应该从具体类派生;使用继承时尽量遵循里氏替换(继承)原则
    4. 单一职责原则(功能)
      • 定义:对象不应该承担太多职责
      • 含义:一个对象承担了太多的职责会导致——1. 一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力;2. 只需要对象某职责时需要将其他的职责全都包含,造成冗余代码或代码浪费
      • 实现方式:需要设计人员发现类的不同职责并将其分离,再封装到不同的类或模块中(人工实现
    5. 接口隔离原则(有限接口)
      • 定义:一个类对另一个类的依赖应该建立在最小的接口上;客户端不应该被迫依赖于它不使用的方法
      • 含义:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用
      • 实现方式:接口尽量小,但是要有限度;为依赖接口的类定制服务;了解环境,拒绝盲从;提高内聚,减少对外交互
    6. 迪米特法则(通信)
      • 定义:只与你的直接朋友交谈,不跟“陌生人”说话
      • 含义:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性
      • 实现方式:在类的划分上,应该创建弱耦合的类;在类的结构设计上,尽量降低类成员的访问权限;在类的设计上,优先考虑将一个类设置成不变类;在对其他类的引用上,将引用其他对象的次数降到最低;不暴露类的属性成员,而应该提供相应的访问器(set 和 get );谨慎使用序列化(Serializable)功能
    7. 合成复用原则(复用)
      • 定义:尽量使用组合或者聚合关系实现代码复用,少使用继承
      • 含义:在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现;要使用继承关系,则必须严格遵循里氏替换原则
      • 实现方式:通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用

标签:原则,软件设计,继承,复用,接口,实现,七项,父类
From: https://www.cnblogs.com/southtwilight/p/design_pattern-01.html

相关文章

  • 工作的原则(2)
    1.培养自己的减言能力。少说话,多思考。切记不要抢话。2.任何场合不要随意说自己的想法,学会提问,深思熟虑!!!  会上不要说具体的方法,只说大方向,提问,思考问题,听别人怎么想,怎么说。3.关于邮件等联络,细看,细想之后再回复,能用文字就不用口头。4.说话时刻保持友好的语气,越是严厉的话题,越要......
  • 设计原则
    面向对象设计的SOLID五大原则【S】单一职责原则(SingleResponsibilityPrinciple,SRP)【O】开闭原则(OpenClosedPrinciple,OCP)【L】里氏代换原则(LiskovSubstitutionPrinciple,LSP)【I】接口隔离原则(InterfaceSegregationPrinciple,ISP)【D】依赖倒转原则(DependencyInversi......
  • 软件设计原则
    目录1.开闭原则2.里氏代换原则在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。1.开闭原则对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原......
  • 就近原则和this关键字
    在Java中,this是一个引用,它指向当前对象的实例。它可以用于以下几个方面:用于区分局部变量和实例变量:在方法或构造函数中,如果存在一个局部变量和一个实例变量同名,可以使用this关键字来引用实例变量。这样可以明确地告诉编译器你要使用的是实例变量,而不是局部变量。用于在一个......
  • 架构设计原则
    架构设计原则合适原则:合适优于业界领先考虑人员多少考虑时间成本,罗马不是一天建成的结合业务设计简单原则:简单优于复杂结构越复杂可用率越低逻辑越复杂,开发越慢,排查越慢演化原则:演化优于一步到位架构需要随业务的变化而变化不断迭代,去其糟粕留其精华......
  • 合成复用原则
    尽量使用合成/聚合的方式,而不是使用继承。只有当以下的条件全部被满足时,才应当使用继承关系,1、子类是超类的一个特殊种类,而不是超类的一个角色,也就是区分“Has-A”和“Is-A”。只有“Is-A”关系才符合继承关系,“Has-A”关系应当使用聚合来描述。2、永远不会出现需要将子类换成另外......
  • 里氏替换原则
    里氏替换原则,面相对象设计的基本原则之一。里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承服用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏替换原则是对“开-闭”原则的补......
  • 设计模式之类之间的关系和六大原则
    1类之间的关系类与类之间的关系大概有6种,要看懂UML图,首先需要了解这几种关系。1.1继承关系继承指的是一个类(称为子类,子接口)继承另外的一个类(成为父类,父接口)的功能,并可以增加它自己的新功能的能力。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或......
  • 教学软件设计方案及程序
    很多人在教学行业使用久远,在教学道路上缺少很多多媒体工具:例如计算器,多媒体助手等,今天推荐一款软件,作者原创开发,C#编译,可教学使用,不可商用!软件下载(推荐,下载不限速):https://www.123pan.com/s/e7LDVv-ImFmH.htmlgithub:https://github.com/da0505/C-sharp软件代码(本代码已经过测......
  • 182_Power BI 使用 DAX 按照先进先出原则计算毛利润
    182_PowerBI使用DAX按照先进先出原则计算毛利润一、背景在笔者以往的文章中也有先进先出的案例,可以参考(https://jiaopengzi.com/?s=先进先出)。今天我们来看一个网友提出的问题,先进先出的原则,入库和出库的价格都是不统一的。按照出库的日期来计算先进先出的sku的毛利(......