什么是架构?我*初的理解,架构就是通过降低偶合性,提高安全性和扩展性,达到方便对软件进行维护的一套行之有效的分层思想。在我看来架构*主要的就是降低偶合性和提高扩展性,我们平常对于客户端的修改和重构也基本上是围绕这两个点而进行的。当然,这只是我个人的理解,为了怕自己理解太过片面,又在以下几个权威网站,看了一下他们对架构的解释:

百度百科:软件架构(software architecture),是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件,各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口(计算机科学)来实现。

维基百科:软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
某位技术大牛:软件架构就是软件的基本结构。

其实总体说来,软件架构就是软件的基本结构,百度和维基说到抽象描述也基本上是这个道理。

%title插图%num

软件架构特征

一个好的软件架构又基本上具备以下的特征:
维护性:一个好的软件肯定是可以方便维护的,出了问题可以快速排查并修改,不会一改这个问题,又暴出另外的问题。
耦合性:这个是我开发Android过程中体会*多的一个特性,开发过程中有看到一些类,同其它类的耦合性过于强,如果想改一个地方,需要考虑另一个类会不会受到影响,导致自己在做修改的时候总是提心吊胆。还有就是耦合性过强不利于快速定位问题所在,总得来说就是“做人要独立,不要过于依赖”。
扩展性:一个好的架构一定是很方便扩展的,既不要因为扩展而影响到其它,也尽量不要过多从其它地儿复制出代码,如果很多地方都会用到这些代码可以封闭出一个类。

总结

当然,构架的特性还有很多,但基本上都是说大型架构的,在平常Android客户端开发中,*常用、体会*深的还是这几个特性。客户端比较常用的几个架构,比如MVC、MVP也基本是围绕“降低偶合性,提高扩展性和维护性”进行设计开发的。