出租车服务的设计模式

时间:2019-07-31 02:52:03

标签: java design-patterns

我试图理解设计模式,并想实现抽象工厂模式,以了解如何设计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;

    }
}

无法理解如何继续进行。我只是想了解是否要设计这样的东西,如何去做。

1 个答案:

答案 0 :(得分:1)

据我所知,您对Abstract FactoryFactory 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;  
    }
}

Online Demo

实际上,在某些情况下使用Abstract Factory时,存在具有相同方法的不同Factory类,但是在您的方案中,只有一些具有相同方法的类。

相关问题