ios swift 实现简单MVP模式

简介:         在移动开发中,会用到各种架构,比如mvp,mvvm等,其目的就是为了让项目代码的可读性更好,减轻在view(controller)中的大量代码问题。

        在移动开发中,会用到各种架构,比如mvp,mvvm等,其目的就是为了让项目代码的可读性更好,减轻在view(controller)中的大量代码问题。接下来就开始我们的mvp入门之旅吧。


1.什么是MVP?

    MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。

1.1 模型 (Model):负责处理数据的加载或存储

1.2 视图 (View):负责界面数据的展示与用户交互

1.3 主持人(Presenter):是Model和View之间的桥梁,将两者进行链接。 


2.MVP的简单实践:

       这里我们用app开发中常用的登录功能为例,用mvp来实现一个登录逻辑(功能)。既然用MVP 那么我们得新建三个类即:LoginModel,LoginPresenter,LoginView,代码如下:

2.1 LoginModel:

// 定义一个协议用于做登录结果的回调

protocol LoginDeletage {

    func loginResult(result:String)

}

// 定义一个闭包来实现回调(功能和上面的协议一样,所以可以用协议或闭包来完成回调)

  typealias LoginBlock = (_result:String)->Void

class LoginModel:NSObject{


    //具体的登录实现逻辑(这里为了方便所以只是模拟了登录过程,实际过程在这里用网络请求完成登录验证即可)

    func login(name:String,pwd:String,deletage:LoginDeletage){

        if name =="admin"&& pwd =="123"{

          deletage.loginResult(result:"登录成功")

        }else{

          deletage.loginResult(result:"账号或密码错误")

         }

    }

    // 这里用闭包来实现回调其实和上面的功能都一样,只需要选择其中一种即可

    func login(name:String,pwd:String,blok:LoginBlock){

        if name =="admin"&& pwd =="123"{

            blok("登录成功")

        }else{

            blok("账号或密码错误")


        }

    }

}

2.2 LoginView:

// 定义一个协议用来实现与界面交互需要的交互方法

protocol LoginView  {

    // 这里只是使用了一个简单的登录结果显示方法,当然需要其它方法的时候只需要在这里添加相应的方法即可

    func loginResult(result:String)

// .......还可以定义更多方法

}

2.3 LoginPresenter:

// 别忘了这里要实现在LoginModel中定义的协议

class LoginPresenter:NSObject,LoginDeletage{

    // 持有LoginModel

    private var model:LoginModel?

    // 持有 LoginView

    private var loginView:LoginView?

    //在构造方法中传入LoginView

    init(loginView:LoginView) {

        self.loginView=loginView

        self.model = LoginModel()

    }

    // 定义一个login方法供外部调用

    func login(name:String,pwd:String) {

        //这里调用通过协议的回调方式调用LoginModel中的login方法

//      self.model?.login(name: name, pwd: pwd,deletage: self)

        //这里调用通过闭包的回调方式调用LoginModel中的login方法

        self.model?.login(name: name, pwd: pwd, blok: {resultin

            loginView?.loginResult(result: result)

        })

    }

    // 实现协议里的方法

    func loginResult(result:String) {

      self.loginView?.loginResult(result: result)

    }

}


3.以上三个类定义好了之后接下来开始测试,只需要在我们的viewController中调用即可:

//这里需要实现LoginView的协议

class ViewController:UIViewController,LoginView{

    private var p:LoginPresenter?

    overridefuncviewDidLoad() {

        super.viewDidLoad()

        self.p=LoginPresenter(loginView:self)

        self.p?.login(name:"admin", pwd:"1234")

    }

    func loginResult(result:String) {

        print("登录结果:",result)

    }

}


4.总结:

      至此,一个简单的MVP登录实现就出来了,是不是发现viewController中的代码很简洁明了。MVP 的好处是不是就体现出来了,比以往的传统模式来说viewController里就不再有那么多东西了吧。如果喜欢我的文章欢迎关注我哦,有什么问题可以留言大家一起交流学习!


博客园: 猿哥爱码

目录
相关文章
|
6天前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
111 2
|
7月前
|
测试技术 Swift
17 Swift中的模式和模式匹配
Swift中的模式和模式匹配
87 2
|
6天前
|
设计模式 Swift iOS开发
【Swift开发专栏】Swift中的协议与委托模式
【4月更文挑战第30天】Swift编程语言强调协议与委托模式。协议定义了类型需实现的方法和属性,如`SomeProtocol`示例。遵循协议的类、结构体或枚举需实现协议要求。协议可继承,也可作为类型使用。委托模式让对象间通信更灵活,通过协议实现,如`DataSourceDelegate`示例。实战案例展示了在`UITableView`和自定义下载器中使用委托模式。
|
6天前
|
存储 Swift iOS开发
使用Swift开发一个简单的iOS应用的详细步骤。
使用Swift开发iOS应用的步骤包括:创建Xcode项目,设计界面(Storyboard或代码),定义数据模型,实现业务逻辑,连接界面和逻辑,处理数据存储(如Core Data),添加网络请求(必要时),调试与测试,根据测试结果优化改进,最后提交至App Store或其它平台发布。
39 0
|
6天前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
|
6天前
|
存储 安全 Swift
【Swift 开发专栏】使用 Swift 开发一个简单的 iOS 应用
【4月更文挑战第30天】本文介绍了使用 Swift 开发简单 iOS 待办事项应用的步骤。首先,阐述了 iOS 开发的吸引力及 Swift 语言的优势。接着,详细说明了应用的需求和设计,包括添加、查看和删除待办事项的功能。开发步骤包括创建项目、界面搭建、数据存储、功能实现,并提供了相关代码示例。最后,强调了实际开发中需注意的细节和优化,旨在帮助初学者掌握 Swift 和 iOS 开发基础。
|
6天前
|
设计模式 监控 前端开发
深入解析iOS中的并发编程模式
【4月更文挑战第20天】 在当今移动应用开发中,提升程序的响应性和性能是至关重要的。特别是在iOS平台上,合理利用多线程和并发编程技术可以显著改善用户体验。本文旨在探讨几种在iOS开发中广泛使用的并发编程模式,包括线程、GCD(Grand Central Dispatch)、Operation Queues以及异步设计模式等。通过对这些技术的深入分析与比较,我们不仅将揭示各自的优势和潜在缺陷,还会展示如何结合它们以解决实际开发中遇到的并发挑战。
|
6天前
|
调度 iOS开发 开发者
iOS 中的并发编程模式:理解 GCD 和 Operation Queues
【4月更文挑战第19天】 在现代 iOS 应用开发中,有效地管理线程和并发是至关重要的。为了确保用户界面的流畅性和后台任务的高效运行,开发者需要掌握并发编程技术。本文深入探讨了两种主要的并发模式:Grand Central Dispatch (GCD) 和 Operation Queues。我们将分析它们的工作原理,比较它们的特点,并通过实际代码示例说明如何在 iOS 应用中实现高效的并发处理。通过本文,读者将获得在 iOS 平台上进行多线程开发的实用知识,以及如何根据不同的应用场景选择最合适的并发工具。
|
6天前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
214 2
|
6天前
|
监控 Swift iOS开发
局域网计算机监控软件中利用Swift构建iOS端的移动监控应用
在局域网计算机监控软件的开发中,构建iOS端的移动监控应用是一项关键任务。本文将介绍如何利用Swift语言实现这一目标,通过多个代码示例展示关键功能的实现。
225 1