MVP实现HelloWorld

本文详细介绍了一种流行的软件架构模式——MVP(Model-View-Presenter)模式,并通过一个简单的HelloWorld示例,深入浅出地讲解了MVP模式的具体实现过程。

好久没有写博客啦,这些天在千峰的培训任务有些重,今天忙里抽闲给大家带来一个MVP的简单HelloWorld的实现,希望能给大家带来一些启发!!!

类结构图


首先,不要被这么多文件吓到啦,要实现解耦就必须得付出什么,这是无需质疑的!
接下来,让我们一个个来慢慢分析


view包

MVP中将Activity视为View,所以 视图的显示方法 全部定义在view中,在此我们抽取出一个接口MvpView,此处不用创建该接口也可以,我之所以创建该接口是为了让代码具有通用性,即以后实现该MvpView的类都可以适用于既有代码.
我们的例子比较简单,所以MvpView中只有一个showView()方法
MvpView
该方法需要一个String data参数,在这个例子中就是Mode包传过来的字符串Hello Wrold.
接下来,我们定义一个MainActivity,让它实现MvpView,此时必须实现showView方法,我们可以直接通过Toast输出该字符串.但是注意,此处data并没有任何值,我们还没有开始写Mode用于向View传递数据呢!


Model包

我们同样定义一个所有mode的接口MvpModel,同样是为了达到提高通用性的效果
该接口中有一个抽象方法getData,用于实现获取数据的逻辑,注意,MVP模式中,逻辑都是在mode下实现的,然而我们要考虑的是怎样让我们获取的数据传给view?此时就要靠MVP中的presenter来实现啦,但是问题来了,怎样能让presenter能获得我们从mode传过去的数据呢?此处的解决方法是用接口回调,我们可以在mode中定义一个接口,在该接口中定义一个方法并将getData方法获取的数据设置为该接口的方法参数,此时,如果其他类中实现啦该接口,就必须实现该接口定义的方法,此时,该接口定义的方法的参数也就传入了其他类中,这就完成了数据的传递.
MvpModel
我们定义一个Model来实现MvpModel接口并重写getData方法,我们因该在此处写获取数据的逻辑,此处我们只是写一个简单的HelloWorld程序,所以我们直接用String data=”hello world”来假装我们已经通过某种途径获取啦数据,接下来我们就是要把该数据传递给presenter啦.
Model
为了传递给presenter,我们用接口回调的方法,此处需要注意的是,这个getData方法是presenter负责调用的,所以presenter为了能拿到数据,它会在调用该方法的时候同时传递一个回调接口过来,我们只需要调用该回调接口的回调方法即可.


presenter

最后,让我们看看presenter的实现吧.
Presenter
presenter负责接收view的请求数据,以及向mode请求数据并将请求得来的数据返回给view.同样,view和presenter的数据交互也是通过接口回调,就是我们一开始写的MvpView接口,MvpView接口中有个showView方法,该方法需要String类型的data,此处就是从mode中获取的数据HelloWorld.所以将从mode获取数据以及向view返回数据结合起来就是通过调用mode的getData方法,通过调用回调方法onLoadComplete从该回调方法的参数列表中获取从mode中返回的值再通过mvpView的showView方法返回数据给view来显示.此处需要注意的是,我们presenter中并没有modle对象,所以可以在构造函数中进行初始化,同时我们将实现上述功能的方法取个名字叫load.


最后的最后

我们直接在activity中调用new Presenter(this).load();该方法会调用presenter中的load方法,该load方法优又会回调mode中的onLoadComplete方法,此时已经获取啦从mode中返回的数据,这个时候又回调view中的showView方法将该数据传递给view

此时,view只需要和本文开始时一样用Toast显示即可

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
先看效果: https://pan.quark.cn/s/3756295eddc9 在C#软件开发过程中,DateTimePicker组件被视为一种常见且关键的构成部分,它为用户提供了图形化的途径来选取日期与时间。 此类控件多应用于需要用户输入日期或时间数据的场景,例如日程管理、订单管理或时间记录等情境。 针对这一主题,我们将细致研究DateTimePicker的操作方法、具备的功能以及相关的C#编程理念。 DateTimePicker控件是由.NET Framework所支持的一种界面组件,适用于在Windows Forms应用程序中部署。 在构建阶段,程序员能够通过调整属性来设定其视觉形态及运作模式,诸如设定日期的显示格式、是否展现时间选项、预设的初始值等。 在执行阶段,用户能够通过点击日历图标的下拉列表来选定日期,或是在文本区域直接键入日期信息,随后按下Tab键或回车键以确认所选定的内容。 在C#语言中,DateTime结构是处理日期与时间数据的核心,而DateTimePicker控件的值则表现为DateTime类型的实例。 用户能够借助`Value`属性来读取或设定用户所选择的日期与时间。 例如,以下代码片段展示了如何为DateTimePicker设定初始的日期值:```csharpDateTimePicker dateTimePicker = new DateTimePicker();dateTimePicker.Value = DateTime.Now;```再者,DateTimePicker控件还内置了事件响应机制,比如`ValueChanged`事件,当用户修改日期或时间时会自动激活。 开发者可以注册该事件以执行特定的功能,例如进行输入验证或更新关联的数据:``...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值