架构一个软件,无论是企业内部应用软件,面向终端用户的移动应用,还是基于大数据分析的数据分析软件,都需要遵循一定的架构设计原则。其中最基本的有如下六个设计原则:

开闭原则
开闭原则是所有软件架构设计原则中最基本的一个原则,可以说其它原则都是为了实现开闭原则这一目标的具体方法。开闭原则是指软件应该对扩展开放,对修改关闭。这意味着软件系统的行为是可以扩展的,当软件的需求改变时,应通过对软件模块进行扩展来实现变化,且对模块扩展无需修改已经正常工作的软件模块代码。只有但已有软件模块存在缺陷的时候,才去修改已有代码,而且这种修改不会影响使用该功能的上层模块。

单一职责原则
单一职责是指一个类只负责一项职责,只有一个发生变化的原因,体现了软件设计的高内聚要求。

接口隔离原则
接口隔离原则是指客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小接口上。
接口隔离原则和单一职责原则有些类似,但是两者审视的角度不一样,单一职责原则注重从业务逻辑上划分职责,接口隔离原则从接口抽象的角度为客户端设计单一的接口。

依赖倒置原则
依赖倒置原则是指高层模块不应该依赖于低层模块,他们都应该依赖于抽象;抽象不依赖于具体实现,具体实现依赖于抽象。

里氏替换原则
里氏替换原则是指任何基类可以出现的地方,子类一定可以出现
1. 子类可以拓展父类的功能,但是不能修改父类已有的功能。子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法
2. 子类可以增加自己特有的方法
3. 但子类实现父类的抽象方法时,方法的前置条件(即方法的形参)要比父类的方法的输入参数更宽松
4. 但子类实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类的方法的返回值更严格
迪米特原则
迪米特原则又叫做最小知识原则,是指一个类只与自己的朋友通信,不要和陌生人通信,对自己依赖的类知道的越少越好。
迪米特原则可降低模块间的耦合度。我们熟悉的门面模式,中介模式,都是该原则的应用列子。
所有的软件设计基本原则都体现了通过增加抽象层来实现软件灵活,可扩展的要求的思想。因此抽象层的设计就非常关键,要设计不易变的抽象层来封装容易变化的具体实现层。抽象层就是一个软件模块对外提供服务的契约,契约是不能经常变化的。