MVC设计模式浅析
MVC是复合模式,结合了观察者、策略和组合模式
——《Head First 设计模式》
组成部分
视图(View)
- 用来呈现模型,从模型中获得数据并且显示它
- 往往采用组合模式,如Android中的View、ViewGroup树,用于显示界面
控制器(Controller)
- 获取用户的输入事件,分析它,并向模型发出对应的指令
- 往往采用策略模式,对于视图而言,控制器就是策略,当视图收到输入事件时,具体的对策会交给具体的控制器完成,视图并不关心工作是怎么完成的
模型(Model)
- 持有所有的状态、数据和程序逻辑。模型没有注意到视图和控制器,它只对外暴漏了操纵和检索状态的接口,并发送状态改变他的观察者们
- 采用观察者模式。模型是主体,视图等是观察者,当模式的状态改变就会通知它的观众,比如视图会根据模型的状态不同显示不同的数据
一个具体例字的分析——音乐播放器
视图——PlayerActivity
布局为LinearLayout,里面还前有不同的layout,这样构成了View树,体现了组合模式。PlayerActivity的布局中有很多的button、progressBar等等。视图通过Android内部的视图树机制从根部开始开始分发用户的输入事件,交由View.OnClickListener处理
控制器——各样的Listener
这些控制器会解析用户的输入事件是什么,如对于seekBar而言,会判断是否为拖拉进度条,如果是,那么就会向模型(PlayService)发送广播,通知后台Service改变播放的进度。视图把这一切都交由listener处理,体现了策略模式
模式——PlayService
里面只有MediaPlayer对象,保存着所有的播放状态以及音频流文件。Service并不与Activity进行绑定。当Service进行改变的时候,会发送广播给Activity,体现了观察者模式。