代码之家  ›  专栏  ›  技术社区  ›  janetsmith

为对象或动作/行为创建接口?

  •  4
  • janetsmith  · 技术社区  · 16 年前

    interface Comparable
    interface Enumerable
    interface Listable
    interface Talkable
    interface Thinkable
    

    interface Comparator
    interface Enumerator
    interface List
    interface Human
    

    为什么?

    这个问题不是关于命名约定(able后缀或I-前缀)。这是关于界面的设计意图及其在以下方面的影响:-

    1. 灵活性

    public class Man implements Talkable, Thinkable, Laughable
    public class Woman implements Talkable, Thinkable, Laughable
    

    另一方面,如果我们基于对象创建接口,我们可以将其用作

    public class Man implements Human
    public class Woman implements Human
    

    我们也可以将其用于多态性目的。

    Human man = new Man();
    
    3 回复  |  直到 16 年前
        1
  •  4
  •   SingleShot    16 年前

    接口与具体类的功能无关。它们更多地是关于客户的需求,以及什么可以替代客户的需求。例如,与其尝试从 Man 类,而是专注于使用 类。它有什么作用?也许这是一个 Conversation 想要让事物相互交流的班级。如果你给它两个 talk() Talkable 接口(例如)。当你看到一个 健谈的 此界面 对话 同学们,你们不应该认为“这真的是一个 “而是,”我在哪里看到 健谈的 ,我可以用任何工具代替 健谈的 ,无论是 , Woman , Parrot , Robot 等等”

    Dependency Inversion Principle , Interface Segregation Principle ,以及 Liskov Substitution Principle

        2
  •  3
  •   Alex Martelli    16 年前

    接口 Comparable 应该由实例可以比较的类来实现;接口 Comparator (在任何级别的泛型编程语言中,可能 Comparator<T>

        3
  •  1
  •   yoda    16 年前

    创建接口是为了定义对象的必要行为,您可以对多个对象具有类似的行为。就像如果你想创造人类的行为一样,你可以拥有对象——男人和女人,他们有相同的行为,但有一些不同的功能/属性。如果你不这样使用接口,在这种情况下,你必须为两种性别创建2个接口。

    因此,接口与对象的行为有关。