面向对象的7大基本原则
2016-01-28 19:39
183 查看
单一职责原则
开放-封闭原则
里氏替换原则
依赖倒转原则
迪米特法则Law of Demeter
组合聚合复用原则CompositeAggregate Reuse Principle CARP
接口隔离原则Interface Segregation Principle
扩展产生不一样的代码。不变产生稳定的代码,这里一切都是为了健壮与开发。变化才是灵魂。修改会产生不健壮的代码,增加维护的难度。开闭原则是面向对象的核心所在。遵循这个原则可以产生可维护、可扩展、可复用、灵活性好的代码。
这里本人感觉是开闭原则的体现。子类不能改变父类的行为。因此产生这里的一个特性。
B.抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
这里有利于解耦。提高系统的稳定性,减少并行开发引起的风险,提高代码的可读性和可维护性。
依赖倒转原则其实可以说是面向对象的标志,编程如果从思考面向抽象编程,而不是面向过程,这是面向对象的一个很大好处。
解耦。
继承容易改变父类,不易于维护。代码逻辑混乱。
建立单一接口,不要建立庞大的接口,尽量细化接口,接口中的方法尽量少。也就是要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。依赖几个专用的接口要比依赖一个综合的接口更灵活。接口是设计时对外部设定的约定,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
开放-封闭原则
里氏替换原则
依赖倒转原则
迪米特法则Law of Demeter
组合聚合复用原则CompositeAggregate Reuse Principle CARP
接口隔离原则Interface Segregation Principle
单一职责原则
这里没啥好说的。比较简答。有利于解耦。职责的交叉容易使各自功能相互影响,产生不利于维护的代码,代码已读性也大大提高。单一职责有利于后期维护,如果每个类都各司其职,以后的功能改变更利于添加,并且产生不健壮的代码。开放-封闭原则
软件实体(类、模块、方法)应该可以扩展、但是不可以修改。扩展产生不一样的代码。不变产生稳定的代码,这里一切都是为了健壮与开发。变化才是灵魂。修改会产生不健壮的代码,增加维护的难度。开闭原则是面向对象的核心所在。遵循这个原则可以产生可维护、可扩展、可复用、灵活性好的代码。
里氏替换原则
子类型必须能够替换成父类型这里本人感觉是开闭原则的体现。子类不能改变父类的行为。因此产生这里的一个特性。
依赖倒转原则
A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。B.抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
这里有利于解耦。提高系统的稳定性,减少并行开发引起的风险,提高代码的可读性和可维护性。
依赖倒转原则其实可以说是面向对象的标志,编程如果从思考面向抽象编程,而不是面向过程,这是面向对象的一个很大好处。
迪米特法则(Law of Demeter)
叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD解耦。
组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP)
尽量使用合成/聚合达到复用,尽量少用继承。原则: 一个类中有另一个类的对象。继承容易改变父类,不易于维护。代码逻辑混乱。
接口隔离原则(Interface Segregation Principle)
建立接口尽可能少建立单一接口,不要建立庞大的接口,尽量细化接口,接口中的方法尽量少。也就是要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。依赖几个专用的接口要比依赖一个综合的接口更灵活。接口是设计时对外部设定的约定,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
相关文章推荐
- 2.3.4Python表达式
- Set up Git serve
- python爬虫抓站的一些技巧总结
- python爬虫抓站的一些技巧总结
- Android ListView异步加载数据库图片
- 2.3.3优先级规律和特点
- Install OpenCV3.1 on Mac by brew
- 【转载】HBase基本概念和hbase shell常用命令用法
- HDU-1506-Largest Rectangle in a Histogram【思维】【dp】【好题】
- 2.3.2运算符优先级
- dede递增函数autoindex的使用
- ReactNative使用require引用模块的技巧
- so_reuseaddr & so_reuseport
- 2.2.6 行与缩进
- 2.3.1Python运算符
- 静态库framework(一)
- POJ 1364 King(差分约束)
- PHPCMS V9 注射利用
- 软键盘切换以及隐藏
- Android 三种方式实现圆角ImageView