抽象工厂问题

And*_*rew 2 uml design-patterns class-diagram factory-pattern

我试图了解抽象工厂的设计模式.我遇到了很多麻烦.我试图使用以下示例来开发UML类图:

汽车设计师可以设计许多不同类型的汽车.汽车可以有两扇门,也可以有四扇门.汽车可以是四轮驱动,也可以是两轮驱动.汽车由不同的部件组成:车轮,车门,发动机,变速箱等.每个部件都有不同的操作:例如,变速器可以有first_gear(),second_gear(),third_gear(),fourth_gear(),reverse() ,中立().

汽车零件(如上所列)可在家庭中使用:本田,吉普,福特等.

使用抽象工厂设计方法,我需要开发一个软件系统,以便系统可以轻松地将汽车从一个家庭转换到另一个家庭.

这是我到目前为止所想的:拥有一个工厂和多个抽象工厂.因此,抽象工厂创建模型,而工厂创建零件......

有人可以帮忙吗?谢谢..

Jor*_*dan 5

抽象工厂的设计模式意味着您有一个抽象工厂和许多从它派生的"工厂"实现.

在你的情况下,你可能有一个名为VehicleFactory的抽象工厂,它又由HondaFactory,JeepFactory,FordFactory派生.在您的示例中,您可能还有一类可以从抽象工厂创建的对象.例如:TwoDoorCar,FourDoorCar.这些类也是抽象的,并且具有像Ford2Door,HondaFourDoor这样的具体实现.抽象工厂的要点是抽象出这些具体对象的构造.方法:

FourDoorCar VehicleFactory::CreateFourDoorCar() = 0;
Run Code Online (Sandbox Code Playgroud)

会有具体的实现,如:

FourDoorCar HondaFactory::CreateFourDoorCar() { return new HondaFourDoor(); }
Run Code Online (Sandbox Code Playgroud)

这样,所有的创建方法都将基于一行代码来决定:

VehicleFactory factory = new HondaFactory();
Run Code Online (Sandbox Code Playgroud)

而不是每个地方你创造新的四门和两门车.希望有所帮助.