2

我试图理解抽象工厂设计模式。我有很多麻烦。我正在尝试使用以下示例来开发 UML 类图:

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

汽车零件(上面列出的)可用于家庭:本田、吉普车、福特等。

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

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

任何人都可以帮忙吗?谢谢..

4

2 回答 2

5

抽象工厂的设计模式意味着你有一个抽象工厂和许多从它派生的“工厂”实现。

在您的情况下,您可能有一个名为 VehicleFactory 的抽象工厂,该工厂又由 HondaFactory、JeepFactory、FordFactory 派生。在您的示例中,您可能还有一类可以从抽象工厂创建的对象。例如:双门车、四门车。这些类也将是抽象的,并具有像 Ford2Door、HondaFourDoor 这样的具体实现。抽象工厂的重点是抽象出这些具体对象的构造。方法:

FourDoorCar VehicleFactory::CreateFourDoorCar() = 0;

会有具体的实现,如:

FourDoorCar HondaFactory::CreateFourDoorCar() { return new HondaFourDoor(); }

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

VehicleFactory factory = new HondaFactory();

而不是每个地方都创建新的四门和两门汽车。希望有帮助。

于 2009-10-28T19:14:05.303 回答
3

Head First 设计模式中有一个完美的例子,可以在谷歌书籍上免费查看。他们使用比萨店而不是汽车厂,但想法相同。完美地教了我这个模式。

头部优先设计模式

于 2009-10-28T19:10:23.343 回答