问题标签 [interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
28864 浏览

java - 为什么首选 Java 类的接口?

PMD将报告以下违规行为:

违规行为是“避免使用像 'ArrayList' 这样的实现类型;改用接口”。

以下行将纠正违规行为:

为什么要使用后者List而不是ArrayList

0 投票
9 回答
10886 浏览

java - Java 中静态方法的替代方案

我正在为我正在编写的 Java 程序制作一个迷你 ORM……我的数据库中的每个表都有一个类,所有表都继承自ModelBase.

ModelBase是抽象的,提供了一堆静态方法来从数据库中查找和绑定对象,例如:

所以你可以做一些事情,比如ModelBase.findAll(Albums.class)获取所有持久专辑的列表。我的问题是,在这个静态上下文中,我需要从具体类 Album 中获取适当的 sql 字符串。我不能有像这样的静态方法

因为Java中没有静态方法的多态性。但是我不想在其中创建getSelectSQL()一个实例方法,Album因为我需要创建它的一个实例只是为了获得一个行为上真正静态的字符串。

目前,findAll()使用反射来为有问题的类获取适当的 sql:

但这太恶心了。

那么有什么想法吗?这是我一次又一次遇到的一个普遍问题——无法在类或接口中指定抽象静态方法。我知道为什么静态方法多态性不能也不能工作,但这并不能阻止我想再次使用它!

是否有任何模式/结构可以让我确保具体的子类 X 和 Y 实现一个类方法(或者如果失败,一个类常量!)?

0 投票
15 回答
5383 浏览

java - 针对接口进行编程:您是否为所有域类编写接口?

我同意,针对接口进行编程是一种很好的做法。在大多数情况下,Java 中的“接口”在这个意义上是指语言构造接口,因此您编写一个接口和一个实现类,并且大多数时候您使用接口而不是实现类。

我想知道这是否也是编写域模型的好习惯。因此,例如,如果您有一个域类 Customer,并且每个客户可能有一个 Orders 列表,那么您通常还会编写接口 ICustomer 和 IOrder。并且客户也会有一个 IOrders 列表而不是 Orders 吗?或者你会在域模型中使用接口,只有当它真的由域驱动时,例如你有至少两种不同类型的订单?换句话说,您会因为领域模型中的技术需求而使用接口,还是仅在它真正适合实际领域时才使用接口?

0 投票
7 回答
42881 浏览

c# - 如何用静态方法模拟?

我是模拟对象的新手,但我知道我需要让我的类实现接口才能模拟它们。

我遇到的问题是,在我的数据访问层中,我想要静态方法,但我不能将静态方法放在接口中。

解决这个问题的最佳方法是什么?我应该只使用实例方法(这似乎是错误的)还是有其他解决方案?

0 投票
2 回答
251 浏览

html - HTML 输入的理想用户反馈

让我们面对现实吧:编写正确的、符合标准的 HTML 是相当困难的。编写语义 HTML 更是如此,但我认为计算机不可能解决这个问题。

所以我的问题是,对于输入 HTML 的用户来说,“理想”的反馈是什么?它会是 W3C 验证器样式的错误列表以及相应的行号和列吗?它会是一个带注释的代码显示突出显示的行、错误的解释和可能的修复吗?一种拼写检查样式模式,您可以分别处理每个错误?它不会给他们任何错误信息吗?此外,告诉用户哪些类型的错误是一个好主意?(一些广泛的错误类别包括解析错误、嵌套错误(即在 ab 标签中放置 div)和格式错误。)

  • Scottm:好点;我也不喜欢 W3C 列出所有错误的方式。但是,仍然存在让用户适当地编辑有问题的 HTML 的问题。
  • onebyone:好的,所以看一些截图,看起来 HTML Validator 有一个 W3C 错误列表,但结合了直接进入相关源代码段和扩展错误信息的能力,以及你不必这样做的事实滚动以从一个部分跳到另一个部分。看起来不错,但是普通的乔可以使用吗?

编辑1:作为澄清,这是关于接口,不一定是底层实现。但是,界面需要使用纯 HTML 和 JavaScript 是可行的(如果它只需要 HTML,则可用性加倍,但我认为在这种情况下你会被 W3C 卡住)。

0 投票
10 回答
695 浏览

java - 界面问题

假设我有接口 MyInterface 和 2 个实现 MyInterface 的类 A、B。
我声明了 2 个对象:MyInterface a = new A()MyInterface b = new B().
当我尝试传递给函数时 - 函数doSomething(A a){}出现错误。

这是我的代码:

我的问题是我从一些可以是各种类的组件接口中获取,我需要为每个类编写函数。
所以一种方法是获取接口并检查它是哪种类型。(A的例子)

我想知道其他人是如何处理这个问题的??

谢谢

0 投票
12 回答
118445 浏览

java - Java 接口中的方法是否应该使用或不使用公共访问修饰符来声明?

Java 接口中的方法是否应该使用或不使用public访问修饰符声明?

当然,从技术上讲,这并不重要。实现 an 的类方法interfacealways public。但是什么是更好的约定呢?

Java 本身在这方面并不一致。参见例如Collectionvs.ComparableFuturevs. ScriptEngine

0 投票
4 回答
298 浏览

delphi - 这两组代码有什么区别

这两段代码有什么区别

以及以下内容:

如果它们是相同的,是否有任何优势或可读性问题。

我猜第二个意味着你不能编写一个实现 IInterface2 的类而不实现 IInterface1,而第一个你可以。

0 投票
4 回答
876 浏览

delphi - 接口“递归”和引用计数

我对接口有一个小问题。这是伪代码:

任何人都可以看到缺陷吗?我需要孩子引用它的父母,但在这种情况下引用计数不起作用。如果我创建一个 ParentClass 实例并添加一个子类,则永远不会释放父类。我明白为什么了。我如何绕过它?

0 投票
8 回答
4287 浏览

java - 红宝石和鸭子打字:合同设计不可能?

Java中的方法签名:

红宝石中的类似

在 Java 的情况下,类型系统为我提供了有关该方法期望和交付什么的信息。就 Ruby 而言,我知道我应该传递什么,或者我期望收到什么。

在 Java 中,对象必须正式实现接口。在 Ruby 中,传入的对象必须响应此处定义的方法中调用的任何方法。

这似乎很有问题:

  1. 即使有 100% 准确的最新文档,Ruby 代码也必须从本质上公开其实现,从而破坏封装。撇开“OO 纯度”不谈,这似乎是一场维护噩梦。
  2. Ruby 代码让我知道返回了什么;我必须进行实验,或阅读代码以找出返回的对象会响应哪些方法。

不是要讨论静态类型与鸭子类型,而是要了解如何维护一个几乎没有合同设计能力的生产系统。

更新

没有人真正通过这种方法所需的文档来解决方法内部实现的暴露问题。由于没有接口,如果我不期待特定类型,我是否不必逐项列出我可能调用的每个方法,以便调用者知道可以传入什么?或者这只是一个没有真正出现的边缘案例?