面试题-介绍一下项目的整体架构

Android程序员面试宝典

经常很多童鞋出去面试,会问到介绍下你的项目整体架构,或者介绍你的项目框架等等,如果遇到这样的面试题该如何回答,

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干货程序员

  • 面试题-介绍一下项目的整体架构_第1张图片

你可能感兴趣的:(面试题-介绍一下项目的整体架构)