在设计课程时,建筑师的脑海中有两件事。
- 对象的行为。
- 对象的实现。
如果一个实体有多个实现,那么将对象的行为与其实现分离是可维护性和解耦的关键之一。分离可以通过抽象类或接口实现,但哪一个是最好的?让我们举个例子来检查一下。
让我们来看一个开发场景,其中事物(请求、类模型等)变化非常频繁,您必须交付某些版本的应用程序。
最初的问题陈述:您必须为印度铁路创建一个“火车”类,该类在 1970 年具有 maxSpeed 的行为。
1. 抽象类的业务建模
V 0.0(初始问题)
初始问题陈述:您必须Train
为印度铁路创建一个在 1970 年具有 maxSpeed 行为的类。
public abstract class Train {
public int maxSpeed();
}
V 1.0(更改的问题 1)
更改了问题陈述:您必须Diesel Train
在 1975 年为印度铁路创建一个具有 maxSpeed 行为的类。
public abstract class DieselTrain extends train {
public int maxFuelCapacity ();
}
V 2.0(更改的问题 2)更改了
问题陈述:您必须为印度铁路创建一个ElectricalTrain
类,该类在 1980 年具有 maxSpeed 和 maxVoltage 的行为。
public abstract class ElectricalTrain extends train {
public int maxvoltage ();
}
V 3.0(更改问题 3)
问题陈述:您必须HybridTrain
为印度铁路创建一个(使用柴油和电力)类,该类在 1985 年具有 maxSpeed 、 maxVoltage、maxVoltage 的行为。
public abstract class HybridTrain extends ElectricalTrain , DisealTrain {
{ Not possible in java }
}
{here Business modeling with abstract class fails}
2. 带接口的业务建模
只需将abstract
单词更改为interface
……您的带有接口的业务建模就会成功。
http://javaqna.wordpress.com/2008/08/24/why-the-use-on-interfaces-instead-of-abstract-classes-is-encouraged-in-java-programming/