一般一个系统包括架构模式、设计模式、软件框架等。一般一个系统包括架构模式、设计模式、软件框架等。设计模式是在解决问题的过程中,一些良好思路的经验集成,常见的是GoF 23种设计模式。GoF 23种设计模式的一些指导设计原则:

1、开闭原则(OCP):一个软件实体应当对扩展开放,对修改关闭。“抽象化”是OCP的关键。

2、里氏代换原则(LSP):在一个软件系统中,子类应该可以替换任何基类能够出现的地方,并且经过替换以后,代码还能正常工作。“继承”是LSP的关键。

3、依赖倒转原则(DIP):要依赖于抽象,不要依赖于具体。或者说是:要针对接口编程,不要对实现编程。“规范抽象”是DIP的关键。

4、接口隔离原则(ISP):使用多个专门的接口比使用单一的总接口要好。也就是说,一个类对另外一个类的依赖性应当是建立在最小的接口上的。“多重继承”是ISP的关键。

5、组合/聚合复用原则(CARP):在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。“组合/聚合”是CARP的关键。

聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。
组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。

6、迪米特法则(LoD):又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。“传递间接的调用”是LoD的关键。

关于GoF 23种设计模式的内容可以参考《深入浅出设计模式》这本书籍。

转载于:https://www.cnblogs.com/ajian005/archive/2012/10/28/2753658.html

软件架构——设计原则相关推荐

  1. 【软件架构设计原则】开闭原则和依赖倒置原则

    文章目录 软件架构设计原则 开闭原则 依赖倒置原则 最后 软件架构设计原则 本文通过实例来讲解 开闭原则 依赖导致原则 开闭原则 开闭原则(Open-Close Principle,OCP)是指一个软 ...

  2. 【软件架构设计原则】单一职责原则和接口隔离原则

    文章目录 软件架构设计原则 单一职责原则 接口隔离原则 其他设计原则 软件架构设计原则 本文通过实例来讲解 单一职责原则 接口隔离原则 单一职责原则 单一职责(Simple Responsibilit ...

  3. 软件架构设计原则和大数据平台架构层

    1.软件架构设计的六大原则: 1)"开-闭"原则(OCP) Software entities should be open forextension, but closed fo ...

  4. 软件架构设计原则--迪米特原则

    本专栏内容参考自:咕泡学院Tom老师的<Spring5核心原理与30个类手写实战>,仅作个人学习记录使用,如有侵权,联系速删   迪米特原则(Law of Demeter,LoD)是指一个 ...

  5. 软件架构设计原则-开闭、依赖倒置、单一职责、接口隔离、迪米特、里氏替换、合成复用,附Java语言示例讲解

    场景 1.开闭原则(Open-Closed Principle,OCP) 是指一个软件实体(如类.模块和函数)应该对外扩展开放,对修改关闭.所谓的关闭,也正是对扩展和修改两个行为的一个原则. 它强调的 ...

  6. 软件架构设计原则--里氏替换原则

    本专栏内容参考自:咕泡学院Tom老师的<Spring5核心原理与30个类手写实战>,仅作个人学习记录使用,如有侵权,联系速删   里氏替换原则(Liskov Substitution Pr ...

  7. 软件架构设计原则-里氏替换原则

    前言 里氏替换原则简单的理解可以是父类用到的地方可以用子类替换并且不改变逻辑,这就要求子类可以扩展父类的功能,但不能改变父类原有的功能.里氏替换原则要求 (1) 子类可以实现父类的抽象方法,但不能覆盖 ...

  8. 软件架构设计原则-DIP依赖倒置原则

    一.什么是依赖倒转原则 依赖倒转(Dependence Inversion Principle ): 1.抽象不应该依赖于细节,细节应该依赖于抽象. 2.高层模块不依赖底层模块,两者都依赖抽象. 二. ...

  9. 软件架构(软件体系结构)-设计原则篇(七大设计原则)

    软件架构(软件体系结构)-设计原则篇(七大设计原则) 1.软件架构设计原则概述 1.1.软件的可维护性 1.软件的维护 一个好的软件设计可维护性较好的系统,必须能够允许新的设计要求很容易地加入到已有的 ...

最新文章

  1. 开篇第一题:经典中的经典!
  2. 数据结构与算法 | 二叉树的实现
  3. 【caffe-Windows】caffe+VS2013+Windows无GPU快速配置教程
  4. extjs 前端js代码调用后台函数方法
  5. phpStorm重构快捷键(mac系统、持续更新)
  6. 查看oracle 锁定用户名,oracle用户名被锁定
  7. Quartz调度源码分析
  8. (3)verilog语言编写二分频
  9. 如何设置STM8单片机选项字
  10. C语言基础专题 - 头文件引用
  11. POJ 1486 Sorting Slides (二分图关键匹配边)
  12. 2021年认证杯SPSSPRO杯数学建模B题(第一阶段)依巴谷星表中的毕星团求解全过程文档及程序
  13. 如何一键录制4k8k高清视频?
  14. win8 安装双系统 ubuntu 过程
  15. Jmeter 脚本中使用base64 加解密、MD5加密
  16. 以图搜图(基于 Milvus 和 VGG 实现以图搜图)
  17. 微信小程序背景图片不显示
  18. android hal单元测试,用于HAL测试的参数化gtest
  19. Qt、GDAL遥感影像显示
  20. program received signal sigsegv,Segmentation fault的解释(可能并不全面)

热门文章

  1. 基于Python实现相关分析案例
  2. 数据挖掘:数据清洗、转换和消减
  3. php tr td,php-基于tr计数的Td / th的XPath
  4. python逻辑判断_return逻辑判断表达式
  5. python绘制曲线y=2x+5_Python Matplotlib 简易教程
  6. 系统学习机器学习之模型诊断与调试
  7. python referer伪造_php伪造Referer请求反盗链资源
  8. 高中信息技术—Python常见关键字及函数中英文对照
  9. matlab 贝塞尔曲线,matlab实现贝塞尔曲线绘图pdf查看
  10. 【数据库原理实验(openGauss)】事务与并发控制