美文网首页
3.mvc和mvvm的区别和使用

3.mvc和mvvm的区别和使用

作者: 峰子1994 | 来源:发表于2017-10-13 10:53 被阅读43次
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

相关文章

  • 3.mvc和mvvm的区别和使用

    1.mvc和mvvm的由来 2.mvvm的概念 3.mvc和mvvm的区别 4.MVVM的实践 1.model层的...

  • VUE基础篇

    喜欢请关注 会不定时更新 *** 学习前VS使用的插件 MVC和MVVM的区别 MVVM是Model-View-V...

  • MVC和MVVM的区别?MVVM和MVP的区别?

    主要还是数据流向的不同。 https://blog.csdn.net/victoryzn/article/deta...

  • MVVM

    MVVM 1. 说一下使用jQuery和使用框架的区别? jQuery实现todo-list √ vue实现tod...

  • mvc和mvvm区别

    MVVM即Model-View-ViewModel的简写。即模型-视图-视图模型。模型(Model)指的是后端传递...

  • vue的mvvm原理解析及手写一个

    # 手写vue的mvvm实现原理 ## 1:mvc和mvvm的区别? MVC:modal-view-control...

  • mvc和mvvm的区别

    前言 mvc和mvvm大概是个老生常谈的问题了,关于MVC和MVVM如此这般设计的原因以及我们应该如何思考一些相关...

  • mvc 和 mvvm 的区别

    在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻...

  • MVC和MVVM的区别

    MVC:Model-View-controller   Model(模型)     数据模型,提供要展示的数据,因...

  • iOS进阶基础

    iOS常用的设计模式有哪些?MVC和MVVM的区别? import和@include和区别?@class有什么作用...

网友评论

      本文标题:3.mvc和mvvm的区别和使用

      本文链接:https://www.haomeiwen.com/subject/ihqssxtx.html