我应该使用哪种设计模式来通知更改?Java/Kotlin Android
在这种情况下,我正在为客户构建一个SDK,以通知他们三种不同的触摸状态:我应该使用哪种设计模式来通知更改?Java/Kotlin Android,java,android,design-patterns,kotlin,Java,Android,Design Patterns,Kotlin,在这种情况下,我正在为客户构建一个SDK,以通知他们三种不同的触摸状态: 触物 外物 物体接触出口 我尝试使用Observer设计模式,Observable将更新发送给作为客户的所有观察者。但也存在一些问题 遵循本设计指南,请注意,为了让客户订阅,他们需要对以下内容进行编码: val bob = Bob() bob.addObserver(Customer1()) class Customer1: Observer{ val name = "Customer1" o
val bob = Bob()
bob.addObserver(Customer1())
class Customer1: Observer{
val name = "Customer1"
override fun update(o: Observable?, arg: Any?) {
// Do your logic here
}
}
这意味着客户在集成SDK时需要同时声明一个名为Customer1的类文件和扩展的Observer
有没有一种方法可以简化让客户注册为SDK的Observable的观察者的过程?我不确定应该实现什么样的抽象 发布/订阅也是另一种选择。发布事件和其他代码区域可以订阅/侦听它们,并做出反应或响应 发布/订阅也是另一种选择。发布事件和其他代码区域可以订阅/侦听它们,并做出反应或响应 我不知道Kotlin,但这种模式的要点是它可以让你注册任何数量和类型的观察者。任何观察者都可以通过任何可观察者进行更新。要使用API,客户端需要处理这个问题。这并不意味着他们一定需要
Customer
类。这只意味着他们需要一个知道如何处理你传递的数据(arg
)的观察者。在你的链接中,如果需要的话,你甚至可以检查类型并用一个更新处理多个可观察类型。谢谢@chieftwoils,我认为更简单的方法是实施一个,因为它删除了我的观察者示例中看到的所有以前的锅炉板代码。你可以尝试一下你不想使用的PublishSubject
LiveData?@EdgarKhimich我以为LiveData是用来观察活动用户界面的变化,而在这种情况下没有用户界面。我不知道Kotlin,但这种模式的要点是它可以让你注册任何数量和类型的观察者。任何观察者都可以通过任何可观察者进行更新。要使用API,客户端需要处理这个问题。这并不意味着他们一定需要Customer
类。这只意味着他们需要一个知道如何处理你传递的数据(arg
)的观察者。在你的链接中,如果需要的话,你甚至可以检查类型并用一个更新处理多个可观察类型。谢谢@chieftwoils,我认为更简单的方法是实施一个,因为它删除了我的观察者示例中看到的所有以前的锅炉板代码。你可以尝试一下你不想使用的PublishSubject
LiveData?@EdgarKhimich我以为LiveData是用来观察活动UI的变化,而在这种情况下没有UI。