Mar*_*kMe 4 objective-c mvvm ios swift
我是开发新手,最近练习MVVM设计模式.要在ViewModel和Controller之间进行通信,我正在使用Closure.我知道我也可以使用Delegate.但是有什么惯例或理由我应该遵循什么样的沟通方式.我有点困惑.任何帮助将不胜感激.
我也在寻找这个答案,我发现了这个,
将UI层(UIL)中的闭包传递到业务逻辑层(BLL)会破坏关注点(SOC).您准备的数据驻留在BLL中,所以基本上您会说"嘿BLL为我执行此UIL逻辑".这是一个SOC.(在此处查找更多信息https://en.wikipedia.org/wiki/Separation_of_concerns.)
BLL应该只通过委托通知与UIL通信.这样BLL基本上就是说,"嘿UIL,我已经完成了我的逻辑执行,这里有一些数据参数,可以根据需要用来操作UI控件".
所以UIL绝不应该要求BLL为他执行UI控制逻辑.应该只要求BLL通知他.
这是链接,您将获得更清晰的视图.
小智 0
您有很多选择,具体取决于应用程序的结构。一种是使用单例。对于不太复杂的应用程序,我更喜欢这种方法。数据处理(存储、结构化)位于单例类中。从这个单例类访问数据的不同视图。例如,您有一个名为 DataManager 或类似名称的单例。不同的控制器和其他简单结构从该单例访问所需的数据。
例如,这是一个非常简单的游乐场代码:
class DataManager
{
static let sharedInstance = DataManager()
var _value: Int = 0
var value: Int
{
get
{
return _value
}
set
{
_value = newValue
}
}
}
class DemoController1
{
let dm = DataManager.sharedInstance
func incValue()
{
dm.value += 1
}
}
class DemoController2
{
let dm = DataManager.sharedInstance
func mulValue()
{
dm.value *= 2
}
}
let dm = DataManager.sharedInstance
let dc1 = DemoController1()
let dc2 = DemoController2()
print ("value: \(dm.value)")
dc1.incValue()
print ("value: \(dm.value)")
dc1.incValue()
print ("value: \(dm.value)")
dc2.mulValue()
print ("value: \(dm.value)")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |