3、架构设计(关注点分离、抽象)-潍坊IT培训负责整理
(1)、核心概念
关注点分离
世上本没有架构,关注点一分离就有了架构,我们将一个软件系统的开发从多个维度将我们的工作进行拆分,对于每个领域进行设计,将各个领域有系统的组织起来,这种组织结构就是架构.然而如何将一个复杂的系统将关注点进行合理的分离,这个是非常有挑战的.
抽象
抽象,这是在请教一位前辈时最后给我强调的一点.如果你对app是跟着交互走、一个页面一个页面写的,那么很显然,你没有对你的业务进行抽象,而只是在实现.作为java的设计思想也很强调抽象的概念.那抽象到底是什么呢?抽象就是你要做什么!更简单的理解就是,写interface而不是class.不知道大家有没有这样的经历,在我们的MVP的开发当中,我们有个Model,也有一个IModel,但是我们写完了Model才知道怎么写IModel,最后成了粘贴复制的体力劳动.如果你是这么做的,你可以自己思考下,假如我们先写是IModel,而不是Model,那就是怎么样的体验呢?这就是将你的业务进行抽象.在架构的设计当中,你只需要知道你要做些什么?而不需要去过多的关注你具体怎么去实现它,这才是设计.
(2)、设计思维
面向过程(Procedure Oriented)
众所周知,在C语言的开发中,我们的逻辑大多是根据任务的流程走.这是面向过程的典型例子.面向过程关注的是工作的流程、一步一步的完成任务.
面向对象(Object Oriented)
Java语言作为面向对象开发的典型代表,这是我们所熟知的.我们将计算机按照人的思维来进行设计,每一个对象都持有自己的属性,并且持有自己的操作方法.对象之间有继承,组合等关系,通过组织这些关系来完成我们的程序.就像社会的人和物一样,人与人之间各种复杂的关系组合完成了社会各项活动的运转.
面向切面 (Aspect-Oriented)
面向切面是为弥补面向对象中的一些缺陷而生的,我们将某些功能封装到一起,提供对外的接口,方便在任何地方调用.就如SharedPreferences, Json, Xml, File, Device, System, Log, 格式转换等,这些通常会在until包里边.它就相当于一个横截面,我们可以随时面向这个横截面完成操作,而自己的逻辑里边不再需要重复的设计.
面向服务
面向服务是将系统进行拆分,分成一个个独立的程序或组件,并对外提供某一项服务.每项服务之间通过某种协议进行通信,并进行分开部署,如HTTP,从而达到松耦合的目的.
以上四种思维重点在于看待问题的角度不同,不同的角度解决问题的方案就不一样,当然各种角度各有优劣.那么对于在android开发中是否都只是按照OOP原则来设计呢?很显然不是.面对不同的需求,不同的场景,我们需要及时调整自己的思维,灵活运用,寻找最适合的角度,拿出最优的设计方案,这才是我们所追求的.
(3)、设计原则
高内聚
怎么理解高内聚?我认为我们在拆分时某一细分领域只完成单一的功能,其内部的事情自己处理.从表面来看比如一个model的class,对外提供了一个接口,那么他有一个输入,一个输出.单独看这个接口而言,它是高内聚的.当然,其内部的组织结构有可能千差万别,所以内聚的形式又各有不同.所以我们将他们分类为功能内聚、顺序内聚、时间内聚等等.
以上就是潍坊IT培训给大家做的内容详解,更多关于IT知识的学习,请继续关注潍坊IT培训