设计模式:简单工厂模式

设计模式:简单工厂模式

大家应该都看过《查理的巧克力工厂》这个电影,就是一个小男孩发生奇遇,获得一个老爷爷,最后老爷爷给了他巧克力工厂的故事。其中在旅途中,会看到各种巧克力制品,巧克力棒、巧克力糖果、巧克力饮料等等,而被主角一一躲过,最终他赢得了工厂,那这个时候主角想吃巧克力,他会怎么做了:他会问旺卡,我想吃巧克力棒,那么旺卡会叫来生产管理,生产管理叫来巧克力棒制作师,来制作巧克力棒或者给主角巧克力棒。如下图:

设计模式:简单工厂模式

 

在这幅图中旺卡就代表了巧克力工厂,因为主角要啥和他说就行了,如何旺卡会给他带来相应的制作师。

简单工厂模式就是这个逻辑:我有很多种类型的巧克力,每个类型有个制作师,而有个总制作师管理他们,而旺卡是他们和用户的中间人,他列举出能够制作的巧克力,你进行选择,然后他把这个类型的制作师返回来给你,旺卡就可以说是有个简单工厂,而简单工厂模式简单来说,就是你输入某个类型,他能返回给你对应的类对象。

之后主角想吃巧克力面了,只需要再来有个巧克力面制作师,然后在列举里面添加“巧克力面”就行了,然后你和旺卡说,我要吃巧克力面,他就把对应制作师给你,你就让他制作就行了。类图如下(可能不太标准):

设计模式:简单工厂模式

 

就这样就是一个简单工厂模式,你只需要调用CChocolateFactory::CreateChocolate输入你要吃什么巧克力,就会获取到对应的类指针,如何调用Create()就可以获得想要的巧克力了。