常说的SOLID五大设计原则指的就是:
S = 单一职责原则 Single Responsibility Principle
O = 开放闭合原则 Opened Closed Principle
L = Liscov替换原则 Liscov Substitution Principle
I = 接口隔离原则 Interface Segregation Principle
D = 依赖倒置原则 Dependency Inversion Principle
具体如下:
1. 单一职责原则
引起类变化的因素永远不要多于一个,或者说:一个类有且只有一个职责。
如果类包含多个职责,代码会变得耦合;SRP看起来是把事物分离成分子部分,以便于能被复用和集中管理,这点也同样适用于方法级别。
2. 开放封闭原则
软件实体(类,模块,函数等)应当对扩展开放,对修改闭合。
(关于对外关联接口或抽象类 )
3.Liskov’s 替换原则
子类型必须能够替换它们基类型,或者说使用基类引用的函数必须能使用继承类的对象而不必知道它。
为什么LSP这么重要:
I. 如果没有LSP,类继承就会混乱;如果子类作为一个参数传递给方法,将会出现未知行为;
II. 如果没有LSP,适用与基类的单元测试将不能成功用于测试子类;
4. 接口分离原则
客户端不应该被迫依赖于它们不用的接口 ;接口应该只包含必要的方法,而不该包含其它的。
比如:
注意到IBird接口包含很多鸟类的行为,包括 fly() 行为.现在如果一个Bird类(如 Ostrich鸵鸟)实现了这个接口,那么它需要实现不必要的 fly() 行为(Ostrich 不会飞)。这个”胖接口”应该拆分未两个不同的接口,IBird和IFlyingBird,IFlyingBird继承自IBird。这里如果一种鸟不会飞(如Ostrich),那它实现IBird接口。如果一种鸟会飞(如 Sparrow麻雀),那么它实现IFlyingBird。
5. 依赖倒置原则
高层模块不应该依赖底层模块,两者都应该依赖其抽象。
比如说一个汽车类,应该依赖于接口,必须写成IEngine eg; :
class Car{
ChinaEnginee eg; // 此处不对
}
如果代码中不用依赖倒置,我们将面临如下风险:
I. 使用低级类会破环高级代码;
II. 当低级类变化时需要很多时间和代价来修改高级代码;
III. 产生低复用的代码;
除此SOLID五项原则外,还有其它的面向对象原则。
例如:
组合替代继承: 相对于继承,要更倾向于使用组合;
笛米特法则: 你的类对其它类知道的越少越好;
共同封闭原则: 相关类应该打包在一起;
稳定抽象原则: 类越稳定,越应该由抽象类组成;;
相关推荐
5大设计原则:SOLID S 单一职责原则 O 开放封闭原则 L 李氏置换原则 I 接口独立原则 D 依赖倒置原则
Shubho:通过我们关于面向对象设计原则(OODP,即SOLID原则)的对话,我想你已经对面向对象设计原则(OODP)有了基本的认识。希望你不要介意我把对话分享到博客上。你可以在这找到它:《如何向妻子解释OOD》. 设计...
1、单一职责原则单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一
敏捷开发设计模式和SOLID原则, 提高编码能力必备, 英文版
扎实的原则和设计模式 推荐人:
灸哥从自我理解和总结的角度来讲解设计模式。 本篇资料包括先给大家讲清楚我们为什么...以及在进入设计模式之前先给大家讲解软件设计原则,一般数据是 SOLID 原则,而我讲的是软件设计七原则,包括 SOLID + CARD + LoD
清洁ts-api API em NodeJs使用脚本,TDD,Clean Architecture,设计模式和SOLID原则
clean-node-api:API em NodeJs使用脚本,TDD,Clean Architecture,设计模式和SOLID原则
最好的解决方案是使用uma API,使用TDZ(面向对象的测试方案),最好的是trabalho的清洁架构,可以通过分配给客户的解决方案,可以免费使用semper quepossível,“ Aplicando设计模式”解析器解决方案,常见问题。...
最好的解决方案是使用uma API,使用TDZ(面向对象的测试方案),最好的是trabalho的清洁架构,可以通过分配给客户的解决方案,可以免费使用semper quepossível,“ Aplicando设计模式”解析器解决方案,常见问题。...
DP模型 《》原书原始码,有部分修改。 设计模式相关资料 六大设计原则(SOLID) 23个设计模式 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23, 24.
设计模式的原则(SOLID)1 单一职责原则 (SRP):每一个引起类变化的原因就是一个职责,当类具有多职责时,应把多余职责分离出去,分别创建一些类来完成每一个
培训的目的是展示如何使用定义良好且解耦的架构使用Flutter创建应用程序,遵循TDD(面向测试的编程)作为工作方法,使用Clean Architecture在各层进行职责分配,始终遵循SOLID原理和应用设计模式来解决一些常见问题...
Python中的设计模式设计模式是针对常见编程问题的可...SOLID设计原则在面向对象的计算机编程中,SOLID是五个设计原则的助记词缩写,旨在使软件设计更易于理解,灵活和可维护。 这些原则是美国软件工程师和讲师Robert
SOLID冒险探索架构原理,设计模式,.NET 5和C# 这本书是关于什么的? 设计模式是针对软件开发中许多常见问题的一套解决方案。 这些设计模式的知识可帮助开发人员和专业人员制作各种规模的软件解决方案。 本书...
系统架构设计原则: SOLID原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则 设计模式:常见设计模式如工厂模式、观察者模式、策略模式等 领域驱动设计(DDD):领域模型、限界上下文、...
清洁React 目的 使用TypeScript在React项目上巩固和应用设计模式,清洁架构,SOLID原则和TDD / DDD方面的高级知识。 项目架构
SOLID设计原则 单一责任原则 它指出,计算机程序中的每个模块,类或功能都应对该程序功能的单个部分负责,并且应封装该部分。 开闭原则 类型应为扩展名而打开,但应为修改而关闭。 也就是说,这样的实体可以允许其...
Martin)的设计原则和设计模式 罗伯特·C·马丁(Robert C. Martin)收集了有关面向对象设计的。 其中的前五个(即所谓的SOLID原则)处理类的设计。 SOLID是Robert C. Martin(也称为Bob叔叔)的前五个面向对象...
面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) 、 Decorator(装饰器)、Observer(观察者) 等设计模式,而没有把足够多的注意力放在学习面向对象的分析和设计上面。...