3.mvc和mvvm的区别和使用

2017-10-13  本文已影响43人  峰子1994
1.mvc和mvvm的由来
iOS中,我们使用的大部分都是[MVC架构](http://www.jianshu.com/p/518cb07679eb)
虽然MVC的层次明确,但是由于功能日益的增加,代码的维护,
更多的代码被写在了Controller中,这样Controller就显得非常臃肿。
为了给Controller瘦身,后来又从MVC衍生出了一种新的架构模式MVVM架构
2.mvvm的概念
Model-数据层
ViewController/View-展示层
ViewModel- 数据模型
3.mvc和mvvm的区别
首先我们简化一下MVC的架构模式图:

![1.png](https://img.haomeiwen.com/i2182103/e2e8b9f26354e07e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
mvc.png
在这里,Controller需要做太多得事情,表示逻辑、业务逻辑,所以代码量非常的大。而MVVM:
MVVM模式和MVC模式一样,目的主要分离的英文
(视图)和模型(模型),有以下四大优点
1.低耦合
视图(视图)可以独立于模型变化和修改,一个视图模型可以绑定到不同的“查看”上,当查看变化的时候模型可以不变,当模型变化的时候视图也可以不变。
2 .可重用性
你可以把一些视图逻辑放在一个ViewModel里面,让很多视图重用这段视图逻辑
3.独立开发
开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注在页面设计中,使用Expression Blend可以很容易设计界面并生成xaml代码
4.可测试
界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
4.MVVM的实践

1.model层的代码:

#import <Foundation/Foundation.h>
@interface CustomModel : NSObject
@property (nonatomic,strong)NSString *title;
@end

2.view层代码:(创建一个cell)
<1>CustomTableViewCell.h的代码

#import <UIKit/UIKit.h>
@interface CustomTableViewCell : UITableViewCell
@property (nonatomic,strong)UILabel *titleLabel;
@end

<2>CustomTableViewCell.m的代码

#import "CustomTableViewCell.h"
@implementation CustomTableViewCell
- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
}
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        _titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0,  [[UIScreen mainScreen] bounds].size.width, 50)];
        [self.contentView addSubview:_titleLabel];
        _titleLabel.backgroundColor = [UIColor whiteColor];
        _titleLabel.font = [UIFont systemFontOfSize:15];
        _titleLabel.textAlignment = NSTextAlignmentCenter;
    }
    return  self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    // Configure the view for the selected state
}
@end

3.关键的ViewModel

上一篇下一篇

猜你喜欢

热点阅读