设计模式之工厂模式

工厂模式,创建型模式


顾名思义,工厂是用来生产批量货物的,比如你是4S店,你现在需要宝马、奔驰、保时捷车辆,你只需要把提货单交给工厂,然后工厂根据提货单将车辆送到你家4S店,你并不需要知道制作车的流程,这就是所谓的工厂。映射到类中,我们需要创建一个车工厂类(CarFactory),我们需要什么,比如宝马,就告知工厂类,然后让工厂类来进行实例化。


步骤1:创建接口Car


步骤2:创建实体类Benz(奔驰)、BMW(宝马)、等等,这些类去实现接口Car

设计模式之工厂模式_第1张图片


设计模式之工厂模式_第2张图片


步骤3:创建一个工厂,用来造这些车,也就是根据用户的要求来实例化哪种车。

设计模式之工厂模式_第3张图片


步骤4:实体类已创建好,共产类也创建好,现在S4店发来提货单,我们需要根据提货单来实例化车的对象


设计模式之工厂模式_第4张图片


步骤5:通过步骤4实例化了奔驰车和宝马车,那就可以将这些车送到4S店了。


如果4S店又新增保时捷车提货单,则应该怎么办呢?

首先:创建实体类Porsche(保时捷),

设计模式之工厂模式_第5张图片


然后:在工厂类中新增Porsche的实例化,更改如下:

设计模式之工厂模式_第6张图片


最后:在FactoryPatternDemo中,将所需要的提货单传给工厂。

设计模式之工厂模式_第7张图片

工厂类的优点:不需要知道产品内部是怎么构造的,只需要知道名字就行,其他内部实现交给工厂类

工厂类的缺点:增加了一个Porsche车,则需要增加Porshce具体类,然后在工厂类需要去实现,

需要修改工厂类,当产品过多时,则需要经常修改工厂类,不符合“对扩展开放,对修改关闭”的原则。


你可能感兴趣的:(Java)