7种软件开发原则

1、开闭原则(open closed principle):

1988年勃兰特 梅耶在自己的书《面向对象软件构造》中提出的。

对于软件实体(模块,类,接口,方法)来说,对扩展开放,对修改关闭

遵循这样的原则好处:

测试简单,只需要测试新的,旧的功能没有修改代码,所以不用测试

可复用性

可扩展性

实现的方法:

抽象约束,封装变化

相对稳定的抽象层用接口

变化相同的封装到一个类里

2、里氏替换原则(liskov substitution principle):

1987年liskov在会议oopslv会议上的报告《数据抽象和层次》中提出。

子类可以扩展父类的功能,但是不能改变父类原有的功能

例如:

动物类-》鸟类-》燕子

但是如果是鸵鸟继承鸟类的话,无法实现鸟类的飞行功能,所以不能继承鸟类只能继承动物类

3、依赖倒置原则(dependence inversion principle):

1996年Object mentor公司总裁罗伯特 马丁提出

高层模块不应该依赖底层模块,两者都应该去依赖抽象层。抽象不应该依赖细节,细节要依赖抽象

一定要以抽象(接口)为基础搭建架构。软件架构的时候,先定义好要用到的接口,具体开发过程再去实现接口

实现方法:

1)、每个类尽量提供接口和抽象类,或者两者兼备

2)、变量的类型,尽量是接口或则抽象类

3)、任何类都不应该从具体类派生

4)、继承时尽量遵循里氏替换原则

4、单一职责原则(single responsibility principle)

由罗伯特C马丁在书《敏捷软件开发:原则、模式、实践》中提出。

一个类应该有且仅有一个引起他变化的原因,否则类应该被拆封

优点:可读性提高,变更容易

5、接口隔离原则(interface segregation principle)

2002年罗伯特C马丁提出

尽量将臃肿庞大的接口拆封成更小更具体的接口

实现方法:

1)、接口尽量小,但要有限度

2)、接口中屏蔽不需要的方法

3)、根据业务拆分接口

4)、提高内聚,减少更多接口的交互

6、迪米特法则(law of demeter)(也叫最少知识原则(leaat knowledge principle))

1987年美国东北大学(northEastern university)迪米特研究课题中提出

只与你的朋友交谈,不和陌生人说话

实现方法:

1)、类和类之间创建弱耦合的类(在明星类和粉丝类之间建立经纪人类)

2)、降低类的访问权限

3)、谨慎使用序列化功能,会引发很多问题?

4)、将引用其他对象的次数降到最低

7、合成复用原则(composite reuse principle)

优先使用组合聚合的关系实现,其次使用继承关系

继承破坏了类的封装性,但是复用不会

实现方法:

将已有的对象纳入新的对象中。新对象调用已有对象的功能

例如:汽车有电动汽油,白车黑车两种并列的属性,这样的情况就应该使用组合复用的模式。

可以在汽车类总引入颜色类。

你可能感兴趣的:(7种软件开发原则)