博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android常用设计模式之简单工厂模式
阅读量:7292 次
发布时间:2019-06-30

本文共 1399 字,大约阅读时间需要 4 分钟。

定义:简单工厂模式属于创建型模式,其又被称为工厂方法模式,这是由一个工厂对象决定创建出哪一种产品型的实例。

简单工厂模式类图:

在简单工厂模式中有如下角色:

  • Factory: 工厂类,这是简单工厂模式的核心,负责实现创建实例内部的逻辑。
  • IProduct:抽象产品类,这是简单工厂模式所创建的所有对象的父类,它负责描述所有实例所工有的公共接口。
  • Product: 具体产品类,这是简单工厂类的创建目标。
DEMO&代码

场景: 最近公司在接入了两款活体检测sdk,而且后续还会接入其他的活体检测sdk。代码如下:

public abstract class AbstractLivingDetection {    /**     * 开始检测     */  public abstract void startDetection();}复制代码
public class HaiXinLivingDetection extends AbstractLivingDetection {    @Override    public void startDetection() {        System.out.println("开启海鑫活体检测");    }}复制代码
public class TongFuDunLivingDetection extends AbstractLivingDetection {    @Override    public void startDetection() {        System.out.println("开启通付盾活体检测");    }}复制代码
public class LivingDetectionFactory {    public static AbstractLivingDetection createLivingDetection(String type){        AbstractLivingDetection livingDetection = null;        switch (type){            case "tongfudun":                livingDetection = new TongFuDunLivingDetection();                break;            case "haixin":                livingDetection = new HaiXinLivingDetection();                break;            default:                break;        }        return  livingDetection;    }}复制代码
使用场景
  • 工厂类负责创建的对象比较少。
  • 客户只需知道传入工厂类的参数,而无须关心创建对象的逻辑。
优点:
  • 使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性。
缺点:
  • 可实例化的类型在编译期间已经确定。如果增加新类型,则需要修改工厂,这违背了开放封闭原则。简单工厂需要知道所有要生成的类型,其当子类过多或者子类层次过多时不适合使用。

代码已上传

转载地址:http://segjm.baihongyu.com/

你可能感兴趣的文章
PBOC~PPT-补充A(转)
查看>>
项目中经常使用的JS方法汇总,非常有用
查看>>
Nginx 1.5.2 + PHP 5.5.1 + MySQL 5.6.10 + Phalcon + Thrift + Composer在 CentOS 下的编译安装
查看>>
jQuery中工厂函数
查看>>
nexus 3上次jar包
查看>>
openstack oslo.messaging库
查看>>
探索c#之不可变数据类型
查看>>
python字符串操作
查看>>
模式对话框,非模式对话框,reject和accept()槽函数确定对话框的返回值
查看>>
【转载】httpContext里面的东西
查看>>
iOS证书(.p12)和描述文件(.mobileprovision)的导出和使用方法
查看>>
Comware 架构理解
查看>>
php抽象类和抽象方法
查看>>
得到输入内容的首字母
查看>>
sklearn特征选择和分类模型
查看>>
设计模式_桥梁模式
查看>>
设计模式C++实现——工厂方法模式
查看>>
语言数据类型
查看>>
Sql 解析XML 解决方案
查看>>
C++ mfc
查看>>