面试题-介绍一下项目的整体架构
经常很多童鞋出去面试,会问到介绍下你的项目整体架构,或者介绍你的项目框架等等,如果遇到这样的面试题该如何回答,
1. 从层次设计结构角度说明:
我们使用mvp这种层级结构进行划分:
Mvp的介绍:
随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责。为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Model-View-Presenter)模式应运而生。
在MVP模式里通常包含4个要素:
-
View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity);
-
View interface:需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试;
-
Model:负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合);
-
Presenter:作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。
Mvp这种模式使模块与模块之间降低耦合度,模块职责划分明显,实现了代码复用机制以及结构更灵活
2. 从代码设计结构角度说明:
代码结构我们使用常见的模板方式设计模式,抽取一些通用的基类:
比如:BaseActivity, BaseFragment, BaseAdapter,BaseDao,BasePresenter等通过这种方式抽取,使我们的代码更加简洁,便于维和。
除了以上的设计,我们这里使用了:
单例模式:减少对象的创建,避免了内存的不必要的开销
工厂模式:用于隐藏多个Fragment的创建过程,使代码更加灵活和简洁
建造者模式:封装了一些辅助工具类。将复杂的创建,放在内部,外部只关注业务逻辑的实现。
3. 从整体UI结构角度说明:
UI结构我们采用了市面比较流程的设计结构
就是底部导航 + ViewPager + Fragments 来实现。
这里面我们并没有使用大量的Activity,而是使用Fragment来代替多个Activity。
因为当业务逻辑或者功能模块比较多时,如果使用大量的Activity,会带来内存泄漏,
从而导致内存开销比较大。这里就使用了ViewPager + 多个Fragments来代替Actiivty。
Fragment在加载数据时,可以对Fragment的数据进行缓存,这样就避免的内存的开销,同时,界面加载速度很快,从而提高了用户体验。
4. 从第三方开源框架角度说明:
首先我们这里为什么选择比较好的开源框架。
良好的一个开源框架,它能够帮助我们快速实现某些功能,这样不但提高我们的开发效率,从而使我们的
应用程序更加健壮。我们都采取哪些开源框架呢?
网络请求框架:我们使用了okhttp
图片加载框架:我们采用了glide
数据库框架我们采用了Greendao
同时我们也引入了Dragger,通过依赖注入的形式,降低代码之间的耦合度
以及EventBus,来简化了线程模型,是线程间通信更加简单和直接。
-
欢迎关注微信公众号、长期为您推荐优秀博文、开源项目、视频
-
微信公众号名称:Android干货程序员