您现在的位置是:首页 >技术教程 >设计模式-工厂模式网站首页技术教程
设计模式-工厂模式
简述
工厂模式,我们自然而然就能想到工厂。那工厂是干什么的,工厂是制造用户所需要东西的。为什么要用工厂制造呢?用工厂制造就是因为可以快速批量的制造东西。而且工厂还可以根据不同要求来制作不同的产品。还有就是统一化,如果制作工艺变了,那么所有人得到的东西都是新的制作工艺生成的产品。那么代码中的工厂就是帮助用户快速批量制造对象的。
为什么要制造一个对象呢?直接new不就可以了?
是因为某些对象如果手动去创建的话因为对象依赖了许多其他类,创建一次这样的对象非常复杂,并且在项目中我们又经常需要这样的类,所以就可以通过工厂来创建。
我们举个简单的例子:
你是一个用户,你现在想吃披萨了,但是没有制作披萨的工厂。现在怎么办,只能自己来制作了。对于代码来说就是我们先学会制作披萨的方法,然后执行制作披萨的方法,最终得到这样一个披萨对象。
上面是我们的类图,我们可以发现,要制作一款披萨,我们必须要要指导披萨的制作过程(MakePizza依赖Pizza),然后我们根据这个制作过程做我们想要的披萨(MakePizza依赖CheessPizza和GreekPizza),对于我们个人来说需要掌握的东西太多,流程繁琐。
简单工厂模式
这里我们就引入工厂,引入工厂后我们就不需要再知道这么多过程了。想要披萨直接找工厂订购就可以,具体如果制作披萨就变成了工厂的工作了。
这是我们简单工厂的类图,我们发现我们只需要依赖工厂就可以了(OrderPizza只需要依赖SimpleFactory),其他复杂的依赖都放到了工厂(SimpleFactory依赖Pizza,组合CheessPizza和GreekPizza)。同样,这样的工厂只是一个简单小工厂,它是不能去定制其他口味的披萨的,或者来说就是定制别的口味的披萨比较困难。
方法工厂模式
这里我们引入方法工厂模式,如果我们想要换一个口味的披萨,那么我们就从不同的订单订购披萨(不同的抽象类OrderPizza的实例)
这就是方法工厂模式,我们根绝不同的订单来得到不同的披萨,如果又新的口味,那就增加新的订单就好了。
抽象工厂模式
还有一种方法来实现随时换不同口味来订购,那就是抽象工厂方法
我们再订购披萨的时候,通过选择不同流水线来订购不同的披萨。