一、项目架构设计与模块分解
项目首先会有一个核心module,然后会有多个功能module,在功能module之上会有具体项目module,这个具体项目module包括,也就是类型为application的module,这个module包含项目基础元的一些信息,比如说包名、applicationId以及一些特有的信息,比如一些第三方平台需要的applicationId、appSecrete等都会写在这个具体的module里。注解module包含了各种annotation,这里面是一些具体的元信息。注解module配合着代码生成器module,也就是通过annotationProcessor或apt调用的module来实现动态生成代码的功能。这个类似于butterknife,butterknife就是这样一个库。这个功能在之后的微信登陆和注册里也会用到,因为微信登陆里有一个很霸道的地方,因为它要求开发者必须在application module里面新建一个微信开发包,包下必须有它规定的两个activity,如果没有的话无法调用之后登陆、支付的回调。这里就可以通过annotationProcessor来生成我们需要的类,在编译器中完成,通过这样的编译器生成技术,我们既不会影响性能,同时也能绕过微信的制度实现自己的功能
2、项目整体的名字就以Latte命名,那么分布下来就是Latte-annotations(注解module)
latte-compiler(注解编译器)、latte-core(核心功能)、latte-...(添加一些独立于功能之外的功能,比如说latte-UI)
latte-ec(业务逻辑module,这是一个Androidlibrary)
3、
latte-annotations和latte-compiler都为java library,也就是说它为一个纯java库,里面不包含一些Android内置的类和方法。
latte-core、latte-...和latte-ec电商为Android类型的library,这是为了便于引入到我们的项目module中,也就是application module中。
4、
注解model:在butterknife中有一个butterknife anninotations,这个module就是我们这个module的职能所在。它提供的是注解之类的元数据,其它的所有功能都不提供。如果提供了其它的功能,那么就需要反思,是不是我们的架构出了什么问题。因为软件封装的宗旨就是,单独的功能只做单独的事情,而不应该去干涉其它的功能。
代码生成器model:它是负责使用我们的注解生成我们所需要的代码,可以类比一下butterknife的compiler这个module,功能是一样的。
核心module提供了整体项目的路由、网络请求、文件处理、图片剪裁等等一些通用的功能,以及整个项目的组织,全是由module处理的这个核心。
业务model:整个项目讲的是电商,所以要编写业务module,业务module包含了许多电商所特有的UI,特有的逻辑以及处理方式。同样的,如果之后需要开发新闻、社交之类的应用的话,同样可以开发出其它的业务module。
具体的项目module:类型是Android application,这个module处理的是一些项目独有的特殊处理,独有的UI,如果想使用代码生成器的话可以使用annotation Processor或apt的方式引入它们。这个分类方式是Android项目默认的分类方式,它就相当于eclipse时代的project,而整个eclipse时代的project就相当于studio时代的workspace。
5、模块分解
6、
7、