Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 驾驶室服务设计模式_Java_Design Patterns - Fatal编程技术网

Java 驾驶室服务设计模式

Java 驾驶室服务设计模式,java,design-patterns,Java,Design Patterns,我试图理解设计模式和实现抽象工厂模式的想法,以了解如何设计像ola、uber这样的cab服务 我开始的时候有点像下面这样的阶级隔离,但后来被卡在那里了 /* 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 cl

我试图理解设计模式和实现抽象工厂模式的想法,以了解如何设计像ola、uber这样的cab服务

我开始的时候有点像下面这样的阶级隔离,但后来被卡在那里了

/* 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;

    }
}

无法理解如何进一步进行。我只是想知道,如果我设计了这样一个东西,该怎么做

据我所知,你对和有点困惑。您将要实现的是返回
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;  
    }
}


事实上,抽象工厂用于某些情况,即存在具有相同方法的不同工厂类,但在您的场景中,只有一些具有相同方法的类。

谢谢。如果我必须通过稍微改变这个场景来实现一个抽象工厂。那会是什么样子。你能帮我吗。可能这是因为我能够更好地理解它们之间的区别。@user1896796在当前代码中,实现了
抽象工厂
是没有意义的,但是您可以看到包含此模式,它与您的代码非常相似。