设计模式:简单工厂、工厂方法、抽象工厂

参考
Java设计模式之创建型:工厂模式详解(简单工厂+工厂方法+抽象工厂) - 知乎

工厂方法

设计模式:简单工厂、工厂方法、抽象工厂_第1张图片
以生产手机为例,具体的UML图如下:
设计模式:简单工厂、工厂方法、抽象工厂_第2张图片
这种方法的优点是对于用户来说,不再需要面对具体的生产逻辑,只需要将生产的安排工作和细节都交给工厂类去做。缺点是在这种情况下,如果想要增加一种商品,比如华为手机,不仅需要新增一个实现抽象产品的接口,还需要修改具体工厂中的代码逻辑。

简单工厂

不仅对产品进行抽象,也对工厂进行抽象,这样想新增一个产品的话,不需要对现有代码进行修改,遵循了开闭原则,即对扩展开放,对修改封闭。

设计模式:简单工厂、工厂方法、抽象工厂_第3张图片

同样以手机为例:

设计模式:简单工厂、工厂方法、抽象工厂_第4张图片

抽象工厂方法

简单工厂只能针对单一的产品类型,如果场景变成了产品族,即苹果旗下不仅有手机,也有手环,小米旗下有手机,也有手环,如果客户想要一次性生产小米手机、小米手环,并一次性生产苹果手机、苹果手环,那么就需要自己再进行复杂的处理。

设计模式:简单工厂、工厂方法、抽象工厂_第5张图片

以手机、手环为例子的具体UML图:

设计模式:简单工厂、工厂方法、抽象工厂_第6张图片

你可能感兴趣的:(设计模式)