我为我的商务类创建了一个界面。我有我的业务逻辑,显示名称。我想通过使用界面显示名称。我听说为了隐藏我们使用界面的业务逻辑,但我该怎么办呢?这是我尝试过但我不知道如何使用它。
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;
}
}
我想通过界面显示名称。
答案 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方法)来使用您的实现。即使消费者代码今天知道实施类仍然应该避免依赖于实现,因为明天它可能会改变。它取决于修复的合同。