我应该使用哪种设计模式来通知更改?Java/Kotlin Android

我应该使用哪种设计模式来通知更改?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

在这种情况下,我正在为客户构建一个SDK,以通知他们三种不同的触摸状态:

  • 触物

  • 外物

  • 物体接触出口

  • 我尝试使用Observer设计模式,Observable将更新发送给作为客户的所有观察者。但也存在一些问题

    遵循本设计指南,请注意,为了让客户订阅,他们需要对以下内容进行编码:

    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。