首页 > 其他分享 >软件设计与体系结构第一次分享

软件设计与体系结构第一次分享

时间:2023-03-05 13:33:06浏览次数:35  
标签:原则 软件设计 子类 接口 对象 抽象 分享 实现 体系结构

1.单一职责原则:就是对于类来说,一个类应该只负责一项职责,规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分,也就是说,接口的职责并不是单一的,而是包含两个职责(功能),用户属性和用户行为。

2.开放-封闭原则:所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。其他的设计原则,很多时候是为实现这一目标服务的。

3.里氏替换原则:子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏,具体实现可以理解为子类在设计的时候,要遵循父类的行为约定,父类定义了方法的行为,子类可以改变方法的内部实现逻辑,但不能改变方法原有的行为约定如:接口方法声明要实现的功能,对参数值,返回值,异常的约定,甚至包括注释中所罗列的任何特殊说明。

4.依赖倒置原则:简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。意图:面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本,面向对象的开发很好的了解了这个问题,一般情况下抽象的概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象,即使实现细节不断变动,只要抽象不变,客户程序就不需要变化,这大大降低了客户程序与实现细节的耦合度。

5.接口隔离原则:客户端不应该依赖它不需要的接口。 一个类对另一个类的依赖应该建立在最小的接口上。 简介 使用多个专门的接口比使用单一的总接口要好。 一个类对另外一个类的依赖性应当是建立在最小的接口上的。 一个接口代表一个角色,不应当将不同的角色都交给一个接口。 没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。 不应该强迫客户依赖于它们不用的方法。

6.组合重用原则:就是说要尽量的使用合成和聚合,而不是继承关系达到复用的目的,组合能更好的实现封装,比继承具有更大的灵活性和更稳定的结构。 该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。 继承的耦合比组合要高。

7.迪米特原则:迪米特原则是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称为成员朋友类,而出现在方法体内部的类不属于朋友类。2023-03-05

标签:原则,软件设计,子类,接口,对象,抽象,分享,实现,体系结构
From: https://www.cnblogs.com/zjw2020011026/p/17180324.html

相关文章

  • 逆向软件设计和开发——留言板系统
    该系统实现了留言板的登陆和注册,留言的增加和读取。采用mysql数据库,把用户的信息(用户名、id(唯一)、密码)和留言(标题、内容、作者昵称、留言时间)分别储存在”yonghu”和”mess......
  • 逆向软件设计和开发——员工信息管理系统
    逆向软件设计和开发是一个程序员在软件开发中必备的能力,只有具备了逆向的软件开发能力,才可以改进别人的已经写好的软件,并不断完善。本次课程设计我逆向开发的软件是一个使......
  • 电商API分享 全网最全电商API 备用
    item_get获得淘宝商品详情item_get_pro获得淘宝商品详情高级版item_review获得淘宝商品评论item_fee获得淘宝商品快递费用item_password获得淘口令真实urlitem_list_up......
  • Java Agent场景性能测试分析优化经验分享
    摘要:本文将以Sermant的SpringBoot注册插件的性能测试及优化过程为例,分享在JavaAgent场景如何进行更好的性能测试优化及在JavaAgent下需要着重注意的性能陷阱。作者:栾文......
  • Vue press 支持图片放大功能的代码分享
    介绍VuePress由两部分组成:一个以Vue驱动的主题系统的简约静态网站生成工具,和一个为编写技术文档而优化的默认主题。它是为了支持Vue子项目的文档需求而创建的。由V......
  • 并行计算机体系结构
    网络的分类OCNsSANsLANsWANs网络基本概念链路:节点或开关之间的连接线。网络:开关为V,链路为E组成的图;当开关之间全连接,称为全连接网络;网络分类间接网络Ω网络任意......
  • 课程笔记整理 面向服务的软件设计与开发方法
    服务层次结构编程思想发展史面向对象→面向组件→面向服务抽象程度越来越高(粒度越来越大)耦合程度越来越松应用范围越来越大从程序应用到企业业务通信范围越来......
  • 【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享|附代码数据
    原文链接:http://tecdat.cn/?p=10278最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出。生存分析(也称为工程中的可靠性分析)的目标是在协变量和事件时......
  • 移动app安全测试工具好物分享,移动app安全测试报告费用标准
    移动互联网时代,我们的生活和工作深受移动app的影响。随着移动app的广泛应用,安全问题成为人们最关注的话题之一。移动app安全除了和软件开发密不可分之外,软件测试的作用......
  • 5款软件压力测试工具分享,上海专业的软件测评中心安利
    一、什么是软件压力测试?软件压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。软件压力测试的基本思路很简单:不是在常规条件下运行手动或自动......