软件七大设计原则

软件七大设计原则

● 开闭原则 Open-Close Principle

定义

一个软件实体(如:类)应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。

优点

提高软件系统的可复用性及可维护性

● 依赖倒置原则 Dependence Inversion Principle

定义

高层不应该依赖底层,二者都应该依赖其抽象。
抽象不应该细节,细节应该依赖抽象。
针对抽象和接口编程,不要针对实现编程

优点

可以减少类之间的耦合性,降低修改代码造成的风险,提高系统的稳定性,代码的可读性和可维护性。

● 单一职责原则 Simple Responsibility Principle

定义

一个类不要存在超过一个导致类的变更原因,也就是说一个类不能因为一种以上职责需求发生改变时而改变。
一个类、接口、方法只负责一项职责。

优点

提高类的可读性;
提高系统的可维护性;
降低类的复杂度;
降低类变更引起的风险。

● 接口隔离原则 Interface Segregation Principle

定义

用多个专门的接口,而不是使用单一的总接口,一个类的依赖应该建立在最小的接口上;建立单一的接口,尽量细化接口,接口中方法应该适度的少定义。

优点

符合高内聚、低耦合的设计思想。使类具有高可读性、可扩展性、可维护性。

● 迪米特法则 Law Of Demeter

定义

又叫最少知道原则。一个对象应该对其他对象保持最少的了解。尽量降低类鱼类之间的耦合。

优点

降低类之间的耦合度,强调只和朋友交流。
朋友:出现在成员变量、方法的参数与返回值中的类。出现在方法体内部的类不属于朋友类。

● 里氏替换原则 Liskov Substitution Principle

定义

继承必须确保超类所拥有的性质在子类中仍然成立。也就是说,当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。

当一个软件实体如果适用一个父类,那一定也适用于其子类,所有引用父类的地方必须能够使用起子类对象,且程序逻辑不变

引申

子类可以扩展父类功能,增加自己特有的功能,但是不能改变父类原有功能。
子类可以实现父类抽象方法,但不能覆盖父类的非抽象方法。
当子类重载父类方法时,方法的参数要比父类方法的参数更宽松。
当子类实现父类方法时(重写、重载、实现抽象方法)方法的返回值类型要比父类更严格或者相等。

优点

约束继承泛滥,符合开闭原则。
加强程序的健壮性,变更时也可以做到很好的兼容性。
提高程序的可维护性、可扩展性。
降低需求变更时造成的风险。

● 合成复用原则 Composite And Aggregate Principle

定义

尽量使用对象的聚合(has-a)或者组合(contains-a)的方式,而不是使用继承关系达到软件复用的目的

优点

可以使软件更加灵活,降低类与类之间的耦合度。
一个类的变化对其他类造成的影响相对较少。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读