工厂模式,工厂方法模式,抽象工厂模式详解

1.工厂模式(Simple Factory)

     消费者并不需要知道工厂内部的实现,只需要指定产品类型,工厂便可以生产对应实例。

     优点:解耦生产逻辑;拓展方便,增加产品无需改动其他产品。

    举例:

   1.分别有Circle,Retangle,Square三个产品,为了统一行为都继承Shape接口。

   2.ShapeFactory是shape的工厂类。

   3.Client(消费者) 指定类型,ShapeFactory生产出对应的实例。

   

2.工厂方法模式(FactoryMethod)

   与工厂模式对比,工厂方法模式将类型匹配解耦放到ShapeFactory的实现类中,与上面的例子对比,每增加一个产品,只需要新建一个ShapeFactory产品实现类,而不需要去改动原有的代码(在工厂模式中,需要去改变产品类型适配的代码)

  

举例:

1.与上个例子对比,每个产品都有自己的工厂类,匹配产品的逻辑解耦放到ShapeFactory工厂类中。

2.每增加一个产品只需要新建多一个ShapeFactory的实现类。

   

 3.抽象工厂类

抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。

区别:

工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。

        在抽象工厂模式中,有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模式所提供的一系列产品就组成一个产品族。

例子:

1.有两种零件,Frame车架与Circle轮胎,分别适配两个汽车厂家,BYD与DZ。

2.DZFactory与BYDFactory工厂分别能产品轮轮胎与车架。

3.Client只需要创建工厂就能生产对应接口的汽车配件。


代码参考:https://github.com/biggirlo/study/tree/dev/src/main/java/com/biggirlo/design/factory

发布了23 篇原创文章 · 获赞 19 · 访问量 1427

猜你喜欢

转载自blog.csdn.net/u012335601/article/details/86666092