欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-02 10:25:43
...

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

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


先附上架构图~~~

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 


END

写的不容易理解那就设置为私密文章吧Emmmm

相关标签: Pure MVC IOS