有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对象关系的java空接口建模

使用空接口进行对象建模可以吗

例如,以下接口扩展了其他空接口,以便描述对象“Ferry”:

public interface Ferry extends Watercraft, StationBased, Scheduled, Oneway, Motorized {}

船艇,基于站点的,等等,也都是空接口,所以它们有点像一个标记。但是,JVM或编译器不使用它们。这些类仅用于建模目的。 这是好的做法吗?接口是否应该通常不提供某种公共功能,而不仅仅是标记一个类


共 (2) 个答案

  1. # 1 楼答案

    这样做没有什么错,只是您可能会很快发现更改结构或添加新表单会变得不愉快

    我可能会考虑一个更灵活的^ {CD1>}选项。

    enum CraftAttributes {
    
        Watercraft,
        StationBased,
        Scheduled,
        Oneway,
        Motorized;
    }
    
    class Ferry {
    
        Set<CraftAttributes> attributes = EnumSet.of(
                CraftAttributes.Watercraft
        //...
    
        );
    
    }
    

    对于Set的并集和交集,您可以做很多有益的事情,这有助于生成强大但清晰的代码

  2. # 2 楼答案

    是的,您可以使用空接口进行对象建模,但是。。。没有任何用例的对象建模是对它的过度扩展

    您编写代码来执行具体的操作,对其进行建模以利用域中的一般抽象,是的,您可以过度抽象代码

    在代码中添加接口是一种分类或类型化,只有在有一个接受者的情况下才有必要这样做。否则它就是死代码

    在我的噩梦中,我最糟糕的遭遇有时仍然萦绕在我心头,那就是对业务服务的抽象,它基本上用一个方法取代了它,该方法将一个映射作为参数,并返回一个包含结果或错误状态的对象。有效地建模方法调用,但这次没有类型。在所有的业务方法上强制这样做只是一场噩梦,以后要解开