如何使用Java和Example创建我自己的自定义接口

时间:2018-05-28 08:27:44

标签: java interface implements

我为我的商务类创建了一个界面。我有我的业务逻辑,显示名称。我想通过使用界面显示名称。我听说为了隐藏我们使用界面的业务逻辑,但我该怎么办呢?这是我尝试过但我不知道如何使用它。

public interface Business_Logic_Interface {
    public String getName();
}

public class Business_Logic implements Business_Logic_Interface {
    private String name = "I am business data";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class MainApp implements Business_Logic_Interface {
    public static void main(String[] args) {}

    @Override
    public String getName() {
        // TODO Auto-generated method stub
        return null;
    }
}

我想通过界面显示名称。

3 个答案:

答案 0 :(得分:2)

您正在类中隐藏业务逻辑,以便访问此logit将跨接口。 MainApp不得扩展Business_Logic_Interface,它必须包含类型为Business_Logic_Interface的变量

public class MainApp {
    public static void main(String[] args) {
        Business_Logic_Interface val = new Business_Logic();
        // acces to business logic
        val.getName();
    }
}

答案 1 :(得分:1)

接口设计为由多个类实现。这是一种添加抽象级别的方法。它允许您通过界面调用不同的对象,因此您不必打扰您正在操作的对象,因为您知道它们实现了您的界面。

在您的情况下,为了向您展示实用程序,我将添加第二个实现该接口的类:

public class Business_Logic_2 implements Business_Logic_Interface{
    private String name = "I am a second class";

    public String getName() {
        return name + ", hello you !";
    }
}

然后在您的main方法中,我创建了两个不同的对象,一个是Business_Logic,另一个是Business_logic_2。然后我将它们放在Business_Logic_Interface列表中。通过这样做,我可以将不同的对象放在同一个列表中,因为我期望对象实现您的接口。稍后我可以在对象上调用方法getName(),而不知道它们是否为Business_logic或Business_logic_2类型。我必须知道的是他们正在实现界面。

public class MainApp {
    public static void main(String[] args) {
        Business_logic obj1 = new Business_logic();
        Business_logic_2 obj2 = new Business_logic_2();
        List<Business_Logic_Interface> list = new ArrayList<Business_Logic_Interface>();
        list.add(obj1);
        list.add(obj2);

        for(Business_Logic_Interface bli : list) {
            System.out.println(bli.getName());
        }
    }
}

答案 2 :(得分:1)

抽象隐藏了实施,但公开了合同。

说完了,现在让我们看看如何。假设您有责任实现业务逻辑。现在你可能需要一些时间来构建逻辑,单元测试相同,重构逻辑再次进行单元测试。与此同时,另一个团队(或队友)需要使用您编写的逻辑,但他们现在想要等待完成逻辑实现。

在这种情况下,您将公开对象类型及其行为。 对象类型和行为成为契约,接口。接口由其名称和抽象方法组成。接口只是预定义的合同。这是固定的,但其实施可能会改变,但由于合同是固定的,因此变更始终与合同相关,而依赖合同的人不受变更的影响。 接口名称成为对象类型(具体类型稍后决定)。所以现在让接口暴露出来的是消费部分。

您的代码的用户将使用您定义的合同。他们在不知道实现类的情况下无法执行new,因此他们通过依赖注入(简单地通过。constructor或setter方法)来使用您的实现。即使消费者代码今天知道实施类仍然应该避免依赖于实现,因为明天它可能会改变。它取决于修复的合同。