Java接口(interface)和类定义

标签 java interface

我正在尝试理解收到的 Java 代码(我是 C# 程序员)

public interface BaseDA {
    ...
}

public class BaseDAImp extends HibernateDaoSupport implements BaseDA {
    ...
}

public interface TxnDA extends BaseDA {
    public Txn getTxn(long id);
}

public class TxnDAImp extends BaseDAImp implements TxnDA {

    public Txn getTxn(long id) {
        ....
    }
}

在另一个类中是这样使用的

protected void ShowTxn(long int) {
    TxnDA txnda = (TxnDA) appContext.getBean("txnDA");
    txnda.getTxn(id)
}

所有类都扩展一个基类并实现一个接口(interface)。这几乎是为 Java 代码中的每个类完成的。

问题 1 - 有人可以向我解释这段代码吗?我已经知道,当我们可能想要耦合软件、插件、隐藏实现细节时,我们会使用接口(interface)(在 C# 中)。

2 - 由于此 java 库的上述条件均不成立,因此修改如下代码是否安全?

public class BaseDA extends HibernateDaoSupport {
    ...
}

public class TxnDA extends BaseDA {

    public Txn getTxn(long id) {
        ....
    }
}

最佳答案

这是一种经典的方法,理论上应该确保代码易于扩展和松散耦合。如果您查看旧的 Java 书籍,您会在许多代码架构示例中找到这一点。

但是,这种方法干净,不是真正有利可图,你绝对不应该自己做,除非它是你喜欢的风格(这不是我假设的,因为你试图理解它)。

软件工程已经取得了长足的进步,现代的方法是专注于代码的可理解性和整洁性。以上述方式编写将导致调试非常困难,新程序员需要大量时间才能掌握项目。

另一方面,这只是一个架构决策,因此并不是直接的“坏”。它已经过时了:-)

至于问题 #2 - 是的,这似乎是合理的,虽然我不能保证它会起作用,但您没有提供足够的代码或上下文。

关于Java接口(interface)和类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33688387/

相关文章:

java - 将 Java 代码拆分为 Token

Java-什么可以通过接口(interface)完成而不能通过抽象类完成?

java - 通过 Java API 包装 scala API

iphone - iOS 界面方向

java - 如何解释android的batterystats文件?

java方法 stub 错误

java - 未找到 Mvn 命令?

c# - 如何将类列表传递给接口(interface)列表?

Java 基础 - 实现在哪里进行?

java - 创建新对象时,您如何知道括号内的参数是什么?