软件设计的七大原则

319 阅读3分钟

一、开闭原则

定义:一个类、模块函数应该对扩展开放,对修改关闭。强调的是用抽象构建框架,用实现扩展细节

**
**

应用:在iOS中 创建一个类的时候把不变的东西放到类中,把经常会变动的东西可以通过给oc添加分类的办法来扩展类的功能,而不是去修改原来的类。

**
**

二、依赖倒置原则

\

定义:

  • 高层模块不应该依赖低层模块,两者都应该依赖其抽象
  • 抽象不应该依赖细节
  • 细节应该依赖抽象
其核心思想是:要面向接口编程,不要面向实现编程。
由于在软件设计中,细节具有多变性,而抽象层则相对稳定,因此以抽象为基础搭建起来的架构要比以细节为基础搭建起来的架构要稳定得多。
这里的抽象指的是接口或者抽象类,而细节是指具体的实现类。 使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,
把展现细节的任务交给它们的实现类去完成。

**
**

三、单一职责

\

定义:又称单一功能原则

应用场景:一个类/接口/方法只负责一项职责

\

单一职责同样也适用于方法。一个方法应该尽可能做好一件事情。如果一个方法处理的事情太多,其颗粒度会变得很粗,不利于重用。

\

\

四、接口隔离原则\

定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。**
**

场景:降低依赖,加强封装

\

五、迪米特原则(最少知道原则)

定义:一个对象对其他对象保持最少的了解,尽量降低类与类之间的耦合,强调只与相关类交流。

如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

\

应用场景:在接口设计时只暴露应该暴露的方法。

\

六、里氏替换原则

\

定义:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。

优点:增加程序的健壮性,即使增加了子类,原有的子类还可以继续运行,互不影响

\

七、合成复用原则

定义:尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。

应用:iOS中少用继承,多用分类等

\

其他原则:可靠性、健壮性、可修改性、容易理解、程序简便、可测试性、效率性、标准化原则、先进性、可扩展性、安全性

总结:在开发的时候尽量从源头设计上做到封装解耦,能抽象的尽量做到抽象,做到模块化


\