![版本1.0.0](https://upload-images.jianshu.io/upload_images/7747415-1441056d4895492a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 
>在工厂模式中有两种方式分别是普通工厂和抽象工厂,他们的应用范围根据业务需求进行选择

##什么是普通工厂
就是定义一个用于创建对象的接口,然后根据子类来决定实例化具体的类。

##为什么要使用工厂
目的就是做抽象降低耦合,避免在代码中出现大量的new关键字。比如项目中有一个类在不同地方实例化,如果项目需求变更改变这个类的内部代码还好,那如果是增加一个构造参数只能到实例化这个对象的地方分别加上新增的参数,一旦实例化多那就麻烦了。

##普通工厂使用场景
>如果一个对象拥有很多子类,那么创建该对象的子类使用工厂模式是最合适的,还有就是需要解决上面那个问题的时候使用。

##普通工厂UML图
![普通工厂UML](https://upload-images.jianshu.io/upload_images/7747415-bd363442aec2db80.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

##怎么使用简单工厂
1. 这里以汽车为例子首先新建一个抽象类Car,里面有一个生产汽车的方法。
```
public abstract class Car {

public abstract void product();
    
}
```
2. 然后创建具体的汽车对象去继承我们上面的抽象类
```
public class JiLiCar extends Car {
    @Override
    public void product() {
        Log.d("test","生产吉利汽车");
    }
}
```
3. 创建工厂类
```
public abstract class Factory {
    public abstract Car productCar();
}
```
4. 创建子类继承上面的工厂类,然后返回具体的汽车类对象。
```
public class SimpleFactory extends Factory{

@Override
    public Car productCar() {
        return new JiLiCar();
    }
}
```
5. 测试代码
```
        Factory factory = new SimpleFactory();
        Car car = factory.productCar();
        car.product();
```

上面这种写法有个问题就是比较麻烦,为什么呢?如果子类有很多个的话就要手动去创建,接下来进行升级为反射版的简单工厂
```
public abstract class Factory {
    //使用反射来简化操作
    public abstract <T extends Car> T productCar(Class<T> clz);
}
```
通过反射来实例化对象
```
public class SimpleFactory extends Factory{

@Override
    public <T extends Car> T productCar(Class<T> clz) {
        Car car = null;
        try {
            car = (Car) Class.forName(clz.getName()).newInstance();

} catch (Exception e) {
            e.printStackTrace();
        }
        return (T)car;
    }
}
```
调用方式
```
     Factory factory = new SimpleFactory();
        Car car = factory.productCar(JiLiCar.class);
        car.product();
```

Android修真传之工厂模式相关推荐

  1. android常用的工厂模式,Android的设计模式-简单工厂模式

    前言 Android的设计模式系列文章介绍,欢迎关注,持续更新中:java 1.定义 定义一个用于建立对象的接口,让子类决定实例化哪一个类.设计模式 2.介绍 简单工厂模式属于建立型模式. 简单工厂模 ...

  2. 【设计模式与Android】抽象工厂模式——嵌合体克隆工厂

    什么是抽象工厂模式 所谓抽象工厂模式,就是为创建一组相关或者是互相依赖的对象提供一个接口,而不需要指定它们的具体类的设计模式.抽象工厂模式适用于一个对象族有相同的约束的情况,用不抽象的语言解释就是国内 ...

  3. Android开发之工厂模式初探

    工厂模式(Factory)是比较常见的一种模式我觉得也是一种非常容易理解的一种模式,举个简单的例子吧,我们小时候经常考试,每次最害怕的就是爸妈问考试试卷的分数,不同的分数我们的心情也是不一样的.那么我 ...

  4. android工厂模式源码,android 设计模式:工厂模式

    放在开头:了解一个设计模式,首先也是最重要的就是了解它的设计依据 工厂模式按抽象的角度,层次不同分为: 抽象工厂方法   抽象工厂 先声明一点:下面提到的抽象类包括   接口,抽象类 抽象工厂方法设计 ...

  5. Android常用设计模式之工厂模式理解

    Android常用设计模式之工厂模式 前言 工厂模式 普通工厂模式 普通工厂模式例子 简单工厂模式总结: 简单工厂模式优缺点: 抽象工厂模式 抽象工厂模式的例子 抽象工厂模式小结 抽象工厂模式优缺点 ...

  6. 工厂模式 android,当Android遇见工厂模式

    设计模式.png 我们先看一下一个Android系统应用中的工厂模式列子,再讲解工厂模式. package com.android.mms.ui; import android.content.Con ...

  7. Android设计模式之——抽象工厂模式

    一.介绍 抽象工厂模式(Abstract Factory Pattern),也是创建型设计模式之一.前一节我们已经了解了工厂方法模式,那么这个抽象工厂又是怎么一回事呢?大家联想一下现实生活中的工厂肯定 ...

  8. Android设计模式之——工厂方法模式

    一.介绍 工厂方法模式(Factory Pattern),是创建型设计模式之一.工厂方法模式是一种结构简单的模式,其在我们平时开发中应用很广泛,也许你并不知道,但是你已经使用了无数次该模式了,如And ...

  9. android 工厂模式创建,7、Android设计模式---(创建型设计模式)抽象工厂模式

    一.介绍,定义 抽象工厂模式也是创建型模式之一,抽象工厂模式起源于对不同操作系统的图形化解决方案,如不同操作系统的按钮和文本框控件及其实现. 为创建一组相关或者相互依赖的对象提供接口,而不需要具体指定 ...

  10. Android开发笔记(九十一)工厂模式

    基本概念 工厂模式是一种常用的实例化对象设计模式. 程序开发很多时候都在不停地敲if.else,因为业务需求总在发展变化,今天客户要求生产A产品,明天客户要求把A产品稍微改改变成B产品,当然A产品与B ...

最新文章

  1. 四十三、文件存储空间管理
  2. 【运维】Linux 系统 之 SSH
  3. 洛谷——P2094 运输
  4. 总结】Android辅助功能(一)-AccessibilityEvent的分发
  5. js中的时间与毫秒数互相转换
  6. php curl form-data,在php curl multipart / form-data请求中发送一个文件和json数据
  7. hibernate之一对一
  8. php rest api lumen,使用Lumen框架创建 REST API 实例教程
  9. php 小程序 运动步数_微信小程序步数运动-收益讲解
  10. 分配给 主机的 Evaluation Mode 许可证已过期。建议升级许可证。
  11. 通过web的方式动态查看tomcat的catalina.out的日志(web.py)
  12. 蓝桥杯 java 组素数_第四届蓝桥杯javaC组_组素数
  13. Matlab图像处理—锐化滤波器
  14. 利润表模板excel_德勤HR:请1小时内,用Excel搭建哔哩哔哩财务估值模型
  15. oracle导出要工具,Oracle导出工具的具体操作步骤详解
  16. 红旗Linux中文教程
  17. 教你如何用CAD画向日葵
  18. IMG2SMI: 将分子图像翻译成SMILES
  19. 【资源】DNW驱动,Win7 64位可用
  20. 常用颜色对应RGB颜色图

热门文章

  1. SAS逻辑回归之多分类
  2. 【高等数学】空间曲线积分、斯托克斯公式、参数方程
  3. jpeg 与 png 图片格式的区别
  4. solidwork 侵权 证据_刑事案件辩护律师证据质证的“分层”模式
  5. 百度笔记聚合是什么?
  6. Prophet(预言者)facebook时序预测----论文总结以及调参思路
  7. 阿里云建站云企业官网标准版/高级版/尊贵版功能对比及选择方法
  8. 太阳高度角计算题_【高考地理】地理计算题型汇总(附太阳高度角专题设计)...
  9. 【办公基本软件】万彩办公大师教程丨PDF压缩工具
  10. 西南大学计算机2019专业英语秋季答案,西南大学2019年秋《大学英语B》作业资料参考答案...