0%

面试题-设计模式

1、mvc、mvp、mvvm

点击看答案

mvc

mvc示意图

特征:

  • view 接收用户的输入,并且可以通知Controller 更改Model 层数据,如果没有涉及逻辑,还可以直接通知Model 更改数据。
  • 需要ui变化,但是没有涉及业务数据,直接调用controller 即可(比如用户选择使用用户名/手机号登录)
  • model 数据变化时,若需要修改ui,需要通过Controller 来通知更新。

在Android中存在问题:

  • Activity 的职责不明,并且臃肿。Activity 除了要展示view (加载view,接收用户操作),还要承担部分逻辑处理(比如生命周期回调)

mvp

mvp示意图

特点:

  • View 层接收输入
  • Presenter 处理业务逻辑,View 与 Model 之间必须经过 Presenter

优点(相对MVC):

  • 避免了View、Model 直接联系,更加解耦,通过Presenter 实现两者之间的沟通
  • Activity 更加简明,仅仅负责UI上的工作

mvvm

mvvm示意图

可能主要关注view 通过databinding 与 viewmodel 相互绑定。

mvc 与 mvp 的区别

  • 在mvc 中 Activity 具有 view 的功能,并且兼任部分 controller 功能,而mvp 中Activity 是纯粹的view
  • mvc 中view 和model 可以直接沟通(没有逻辑情况下,view直接更改model,当然,有逻辑改动的情况下经过controller),而mvp中二者沟通必须经过presenter。

以上内容参考自carson_ho的博客

2、实现一个线程安全的单例模式

3、观察者模式和回调有什么区别?

谢谢你的鼓励