【问题标题】:Which Design Pattern should i use for notifying changes ? Java/Kotlin Android我应该使用哪种设计模式来通知更改? Java/Kotlin 安卓
【发布时间】:2019-07-01 00:44:24
【问题描述】:

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

  1. 触摸对象

  2. 物体接触到外面

  3. 对象触摸退出

我尝试使用观察者设计模式,其中 Observable 向所有作为客户的观察者发送更新。但是也有一些问题。

https://stonesoupprogramming.com/2017/10/28/observer-pattern-in-kotlin/

遵循此设计指南可以看到,为了让客户订阅,他们需要编写以下代码:

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 的 Class 文件和扩展的 Observer。

有没有办法简化让客户注册为我们 SDK 的 Observable 的观察者的过程?我不确定要实现哪种抽象。

【问题讨论】:

  • 我不知道 Kotlin,但该模式的重点是它使您能够注册任意数量和类型的观察者。任何 Observer 都可以使用任何 Observable 进行更新。要使用您的 API,客户端需要处理它。这并不意味着他们一定需要Customer 类。这只是意味着他们需要一个知道如何处理您传递的数据 (arg) 的观察者。如在您的链接中,您甚至可以检查类型并根据需要使用一个 update 处理多个 Observable 类型。
  • 感谢@ChiefTwoPencils 我认为更简单的方法是实现event listener,因为它删除了我的观察者示例中看到的所有以前的样板代码
  • 你可以试试PublishSubject
  • 为什么不想使用 LiveData?
  • @EdgarKhimich 我认为 LiveData 用于观察 Activity UI 的变化,而在这种情况下没有 UI。

标签: java android design-patterns kotlin


【解决方案1】:

Pub/Sub 也是另一种选择。发布事件和其他代码区域可以订阅/收听它们,并做出反应或响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2010-11-29
    • 2018-06-03
    相关资源
    最近更新 更多