我试图理解设计模式,并想实现抽象工厂模式,以了解如何设计ola,uber等出租车服务。
我从下面的类隔离开始,但后来陷入困境。
/* Ola has car type as Auto, micro, mini, prime.
* Later add share car type.
*
* Add cars to the car type
* */
enum CarType{
MINI, MICRO, AUTO, PRIME;
}
public class OlaImplementationAbstract {
public static void main (String[] ags) {
}
}
class carFactory{
}
abstract class Car {
public double fare(double distTravelled) {
return distTravelled;
}
}
class Mini extends Car {
public double fare(double distTravelled) {
return 9 * distTravelled;
}
}
class Micro extends Car {
public double fare(double distTravelled) {
return 8 * distTravelled;
}
}
class Auto extends Car {
public double fare(double distTravelled) {
return 7 * distTravelled;
}
}
class Prime extends Car {
public double fare(double distTravelled) {
return 10 * distTravelled;
}
}
无法理解如何继续进行。我只是想了解是否要设计这样的东西,如何去做。
答案 0 :(得分:1)
据我所知,您对Abstract Factory和Factory Method感到有些困惑。您要实现的是 Factory Method (工厂方法),该方法返回一个Car
,可以通过以下代码实现:
class carFactory{
//use getCar method to get object of type Car
public Car getCar(CarType carType){
switch(carType){
case MINI:
return new Mini();
case MICRO:
return new Micro();
case AUTO:
return new Auto();
case PRIME:
return new Prime();
}
return null;
}
}
实际上,在某些情况下使用Abstract Factory时,存在具有相同方法的不同Factory类,但是在您的方案中,只有一些具有相同方法的类。