如何在接口隔离上实现SOLID

问题描述 投票:1回答:2

我有这样的interface

interface ClientRequestListener {
    fun onLoadStub(name: String)
    fun onClientNeeded(id: String, email: String)
}

但是在一个类上实现它时,我只需要onClientNeeded有什么方法可以避免不得不重写这两个方法?我试图创建另一个接口来扩展该接口,但仍然要求我实现这些方法。

澄清

我正在使用一个外部库,该库使用这两种方法的接口,而问题是我正在使用此方法的地方,我只需要一个方法而不是两个方法,而不是让重写做我想做的任何事情知道一种避免我不需要的额外覆盖的方法。

编辑
fun doSomeMagic(name: String, clientRequestListener: ClientRequestListener? = null) =
    LibraryRequest.getClient(name)
        .withListener(object : LibraryInterface() {
            override fun onLoadStub(name: String) {
                clientRequestListener?.onLoadStub(name)
            }

            override fun onClientNeeded(id: String, email: String) {
                clientRequestListener?.onClientNeeded(id, email)
            }
        })

因此,当我使用此方法时,我会执行以下操作:

doSomeMagic("Charls", object : ClientRequestListener {
  override fun onClientNeeded(name: String) {
    //I'm not doing nothing here
  }

  override fun onClientNeeded(id: String, email: String) {
    //Do something with the id and email
  }
})

所以我想做的是只叫onClientNeeded而不是两个都叫。

我有这样的接口:interface ClientRequestListener {fun onLoadStub(name:String)fun onClientNeeded(id:String,email:String)}但是,当在一个类上实现时,我...

java kotlin coding-style solid-principles
2个回答
0
投票
您必须在abastract类中提供onLoadStub方法的实现。该实现应该只抛出UnsupportedOperationException。然后,您可以在实现中扩展该抽象类。

0
投票
您可以在这里的几个选项中进行更改:
© www.soinside.com 2019 - 2024. All rights reserved.