请找到参考链接:"Strategy for success" article of JavaWorld
我的问题是,当我们可以在抽象类本身声明那些抽象方法时,为什么我们需要有单独的接口并在抽象类中实现它?
ex in image,
public interface Border(){
paintBorder();
getBorderInsets();
isBorderOpaque();
}
public class abstract AbstractBorder implements Border(){
.....
}
相反,我们可以有像
这样的抽象类public class abstract AbstractBorder {
paintBorder();
getBorderInsets();
isBorderOpaque();
}
为什么我们使用界面?有什么必要?
答案 0 :(得分:1)
可能接口定义了可能存在于其他抽象类中的行为,而不是您提到的那个。一个很好的例子是IDisposable接口。
如果您决定在抽象类本身中声明这些方法,那么当您从这个抽象类中实现具体类时,最终可能会遇到很多混乱。此外,由于您可以在抽象类中指定行为,因此实现类可能会重用此行为。
答案 1 :(得分:0)
当我开始使用Java时,这也是我想过的。可以找到一个非常详细的答案here。如果您需要进一步澄清,请发表评论。
答案 2 :(得分:0)
接口是一个很好的实践编程,而不是课堂。在策略模式中,想法是具有“策略”的接口,并且在运行时可以更改策略(实现接口的类),而无需在不改变代码的其余部分的情况下进行更改。
这是SOLID原则的良好开端,使您的代码更灵活,更强大。
我有一个exemple of the Strategy Pattern in my github并且在对象“Cavaleiro”(英语中的骑士)在运行时间中被更改。
为此我创建了一个界面并使用它而不是类的对象,通过它我可以轻松地改变“策略”。