设计模式-工厂

一,工厂模式概述

  • 概念
    工厂模式是一种创建者模式,在任何生成复杂对象的地方都可以使用工厂模式。
  • 工厂模式的分类
    简单工厂模式
    工厂模式
    抽象工厂模式

二,简单工厂模式

  • 概念
    简单工厂模式,一个具体工厂负责生产所有具体产品。客户端只需要关注生成的具体产品
  • UML
    image.png

    Factory:表示具体生产产品的工厂类
    Product:抽象产品类
    P1/P2:具体的产品类
  • 代码实例
public abstract class AbstractProduct {
    public abstract void usePhone();
}
public class AndroidPhone extends AbstractProduct {
    @Override
    public void usePhone() {
        Log.e("zjy", "android手机");
    }
}

public class IosPhone extends AbstractProduct {
    @Override
    public void usePhone() {
        Log.e("zjy","ios手机");
    }
}


public class PhoneFactory {
    public AbstractProduct createPhoneProduct(String name) {
        AbstractProduct product = null;
        if ("android".equals(name)) {
            product = new AndroidPhone();
        } else if ("ios".equals(name)) {
            product = new IosPhone();
        }
        return product;
    }
}

 PhoneFactory factory = new PhoneFactory();
 AbstractProduct product1 = (AndroidPhone) factory.createPhoneProduct("android");
        product1.usePhone();
  • 优点
    客户端需要的产品,可以直接得到,逻辑判断在工厂里边
  • 缺点
    扩展性一般,杜宇不在产品族中的产品,无法扩展,获取具体产品的方法存在于工厂中如果需要添加产品,需要修改工厂中的代码

三,工厂模式

  • 概念
    抽象产品,派生出去多种具体的产品.
    抽象工厂,派生出多种产品工厂类.
    具体的工厂负责一种具体的产品.
  • UML
    image.png
  • 代码
  • 优点
    扩展性,能够处理不同产品系列的产品,通过具体的工厂去生成不同产品族的产品,扩展性较好。
  • 缺点
    类的个数较多。另外一个工厂的只能够生产一个具体的产品。

四,抽象工厂模式

  • 概念
    多个抽象产品类
    每个抽象产品类可以派生出多个具体产品类
    一个抽象工厂类,可以派生出多个具体工厂类
    每个具体工厂类可以创建多个具体产品类的实例

五,总结

1.工厂模式是一个创建型的模式
2.在任何使用A a = new A()的情况下,理论上说都能使用工厂模式。
3.在工厂模式分别的对应使用中,简单工厂模式,注重具体生成的产品,而工厂模式,注重的同一个产品下的不同产品族的产品。如栗子中上海大众的汽车和一汽大众的汽车,抽象工厂模式更多事在与整体产品的架构上,不再是单一一个的抽象产品类。
4.工厂模式:一个抽象产品派生出去多个具体的产品,一个抽象工厂派生出多个具体的工厂,而一个具体的工厂对应生成的是一个具体的产品。
5.抽象工厂模式:多个抽象产品分别派生出多个具体的产品,一个抽象工厂派生成出多个具体的工厂,一个工厂对应生成多个具体的产品,这些多个抽象产品之间存在着联系。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、工厂模式简介 意图定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进...
    怡红快绿阅读 668评论 0 0
  • 设计原则: 要依赖抽象,不要依赖具体类 目录 本文的结构如下: 什么是工厂方法模式 为什么要用该模式 模式的结构 ...
    w1992wishes阅读 1,430评论 0 6
  • 工厂方法模式 介绍 简单工厂模式虽然简单,并且实现了创建和使用分离的功能,但存在一个很严重的问题。当系统中需要引入...
    666真666阅读 318评论 0 1
  • 一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在...
    逆风飞行1226阅读 659评论 0 0
  • 遇见你 一见倾心。 他是我遇到最好的男人 一举一动都让人目光不知觉的跟随 一言一行绅士得那么自然 喜欢总是来得那么...
    红领巾大大阅读 239评论 0 0

友情链接更多精彩内容