关于 Pure MVC 的一些个人理解(基于 IOS 开发)

前言:本篇所写的名词很多可以在下面链接中找到:

初识Prue MVC(基于IOS的文件夹创建、Storyboary的使用及其它)


先附上架构图~~~

1、Model、View、Controller 的作用:

  • Model 中存放数据、访问网络
  • View 中显示页面
  • Controller 中写业务逻辑

2、Delegate (代理模式)的理解:

在 view 中,每一个页面被写成两个子页面:

例如:LoginV 和 LoginM 代理即:

在 LoginV 中定义代理:

protocol LoginVDelegate: class {
    func viewDidLoad()
}
weak var _delegate: LoginVDelegate?      // 会把 LoginMediator 赋值过来

在 LoginM 中继承自 LoginVDelegate 并:

override func onRegister() {
    // 把自己赋值给 View,便于 View 在 viewDidLoad 时调用 LoginMediator 中的 viewDidLoad 函数
    view._delegate = self 
}

3、一个页面包括两个子文件:V 和 M

  • V:真正的视图
  • M:该视图的逻辑代码(一个 M 代表一个 Mediator)

4、Command(命令者模式):里面是方法,不需要实例化

5、程序的起始点是:AppFacade.swift 文件,主要的代码如下:

class AppFacade: Facade{
    /**
     Register Commands with the Controller
     */
    override func initializeController() {
        super.initializeController()
        registerCommand(AppCmd.STARTUP) { AppCmd() }
    }
    /**
     Singleton Factory Method
     */
    class func getInstance() -> AppFacade {
        return super.getInstance { AppFacade() } as! AppFacade
    }
    /**
     Start the application
     */
    func startup(app: AppV) {
        // 把 AppVC 的实例 app 做为 viewComponent 传给 StartupCmd,再在 PrepViewCmd 中完成与 AppMediator 的绑定
        sendNotification(AppCmd.STARTUP, body: app)
    }
}

6、IOS 创建对象不需要 new 关键字,如:book()

7、什么是单例模式?

  • 静态函数
  • 对象唯一

8、IOS 的资源文件名要全英文格式:如用时间戳代替中文名称

9、Facade 其实是一个数组,里面存放着 Model、View 和 Controller ,访问 Model、View 和 Controller 时必须经过 Facade

10、项目文件中的 Info.plist 是项目的配置文件:

  • 单类型
  • 可以有子文件夹

11、Command 代码文件中不需要引入 UIKit 等包,里面是纯代码

12、在 Model 中注册 Proxy (代理)

13、Navigation 指的是 AppV,AppV是一个容器里面有其它的 V

14、每一个 view 都有一个 layer,视图刷新变化不要修用 layer:

  • V 中的 M:从 viewComponent 中传入,执行 M 中的方法
  • M 中的 V:改变 V 

15、view 和 controller 中都可以执行 command命令,一般写在 controller 中,写在 view 中的是小程序


END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值