理论性知识 定义 接口隔离原则, Interface Segregation Principle,(ISP). 一个类对应一个类的依赖应该建立在最小的接口上: 建立单一接口,不要建立庞大臃肿的接口: 尽量细化接口,接口中的方法尽量少. 优点 符合高内聚,低耦合的设计思想: 使类具有很好的可读性,可扩展性和可维护性: 代码实战demo 本次我们以动物场景为例 不遵守接口隔离原则的demo 首先定义一个动物接口,存在吃,飞,游泳3个行为方法,如下图 接下来定义一个cat类,实现动物接口.因为猫只有e…
写在前面 本文属于Java软件设计原则系列文章的其中一篇,后续会继续分享其他的原则.想以最简单的方式,最直观的demo去彻底理解设计原则.文章属于个人整理.也欢迎大家提出不同的想法. 首先是一些理论性知识 定义 开闭原则,The Open-Closed Principle (OCP). 一个软件实体,如类.模块和函数对扩展开放,对修改关闭. 优点 稳定性.开闭原则要求扩展功能不修改原来的代码,可以让软件系统在变化中保持稳定. 扩展性.开闭原则要求对扩展开放,通过扩展提供新的或改变原有的功能,让软…
理论性知识 定义 单一职责原则, Single responsibility principle (SRP): 一个类,接口,方法只负责一项职责: 不要存在多余一个导致类变更的原因: 优点 降低类的复杂度 提高类的可读性 提高系统的可维护性 降低变更引起的风险 特别说明 在我们的实际开发中,很多类或者方法都不完全符合单一职责原则.其实设计原则就是一种指导思想, 并不是要求开发人员必须遵守.根据实际业务需求,在能满足的情况下,尽可能去满足设计原则,这样才更有利于项目的后期维护和优化. 代码实战 非…
理论性知识 定义 依赖倒置原则,Dependence Inversion Principle (DIP) 高层模块不应该依赖低层模块.二者都应该依赖其抽象. 抽象不应该依赖细节,细节应该依赖抽象. 针对接口编程,不要针对实现编程. 在我们的程序中,高层模块可以理解成调用方,低层模块可以理解为被调用方.抽象就是指接口或抽象类,细节就是实现类. 优点 减少类之间的耦合,提高系统稳定性,提高代码可读性和可维护性,降低修改程序造成的风险. 实现开闭原则的前提就是要实现依赖倒置原则 代码实战 商城展售手机…
定义 就一个类而言,应该仅有一个引起它变化的原因. 定义解读 这是六大原则中最简单的一种,通俗点说,就是不存在多个原因使得一个类发生变化,也就是一个类只负责一种职责的工作. 优点 类的复杂度降低,一个类只负责一个功能,其逻辑要比负责多项功能简单的多: 类的可读性增强,阅读起来轻松: 可维护性强,一个易读.简单的类自然也容易维护: 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响. 问题提出 假设有一个类C,它负责两个不同的职责:职责P1和…
一.单一职责原则 不要存在多于一个导致类变更的原因.简单来说,就是一个Class/Interface/Method只负责一项职责. 这句话最为重要的就是这一段:一个Class/Interface/Method只负责一项职责. 我们先来举一个例子,我们在日常生活中都或多或少的听过LOL(英雄联盟)这个游戏,而这个游戏在各个直播平台都很火爆,那我们就以此为例: 某个游戏直播平台会将主播直播时的视频录制下来,等到主播下播后再上传到平台,这样就形成了录播.对于这两种视频观看模式,平台有着这样的规定:观看…
一.SRP简介(SRP--Single-Responsibility Principle): 就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因.   所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多.也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了.因为职责是变化的一个轴线,当需求变化时,该变化会反映类的职责的变化. “就像一个人身兼数职,而这些事情相互关联不大,,甚至有冲突,那他就无法很好的解决这些职责…
SRP设计原则面向对象类设计的第一个原则,最优先考虑的因素 一个类应该有且仅有一个职责.所谓一个类的职责是指引起该类变化的原因,如果一个类具有一个以上的职责,那么就会有多个不同的原因 引起该类变化,其实就是耦合了多个互不相关的职责,就会降低这个类的内聚性. 也就是说每一个类只做一件事,那么什么叫做"一件事"? 比如说一个学生信息管理类,这个类有"添加学生信息". "查询学生信息". "修改学生信息". "删除学生 信…
前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. 软件设计原则系列文章索引 C#软件设计——小话设计模式原则之:依赖倒置原则DIP C#软件设计——小话设计模式原则之:单一职责原则SRP C#软件设计——小话设计模式原则之:接口隔离原则ISP C#软件设计——小话设计模式原则之:开闭原则OCP 一.原理介绍 1.官方定义 单一职责原则,英文缩写S…
最近在实践微服务化过程中,对其“单一职责”原则深有体会.那么只有微服务化才可以单一职责,才可以解耦吗?答案是否定的. 单一职责原则是这样定义的:单一的功能,并且完全封装起来. 我们做后端Java开发的,应该最熟悉的就是标准的3层架构了,尤其是使用Spring.io体系的:Controller.Service.Dao/Repository.为什么要分层?就是为了保证单一职责,数据模型的事情交给Controller,业务逻辑的事情交给Service,和数据打交道的事情就交给Dao/Repositor…