美文网首页
工厂模式

工厂模式

作者: 无人之境215 | 来源:发表于2016-12-28 23:28 被阅读13次

工厂模式

介绍

工厂模式属于创建型模式(实例化对象模式),定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

角色

  • 工厂类角色:具体产品类角色的创建者
  • 抽象产品类角色:接口或抽象类,负责具体产品角色的定义,及与客户端的交互
  • 具体产品角色:被工厂类创建的对象,是客户端所需要的对象
  • 客户端:调用工厂类的实例,传递需要的产品信息来获取产品的对象

实例

  • BitmapFactory这是我们常用的工场模式,我们需要的各种Bitmap经由BitmapFactory来创建
  • CursorFactory這是产生Cursor对象工厂类,抽象产品为Cursor(接口),在CursorFactory中实例化,客户端根据所需来获取Cursor实例
  • DocumentBuilderFactory是DOM 解析器工厂,它的抽象产品是DocumentBuilder(抽象类),这里又采用Builder模式

模型

设计模式-工厂模式.JPG

如何使用工厂模式

根据工厂模式的角色,我们可以有以下四个步骤来使用工厂模式。

  • 创建一个接口
public interface Product{
    void function();
}
  • 创建实现接口的实体类

public class ProductA implements Product{

    @Override
    public void function(){
        
    }
}

public class ProductB implements Product{

    @Override
    public void function(){
        
    }
}

public class ProductB implements Product{

    @Override
    public void function(){
        
    }
}

  • 创建一个工厂,生成实体类的对象
public class Factory {

    //使用 getProduct 方法获取形状类型的对象
    public Product getProduct(String type){
        if(type == null){
            return null;
        }
        if(type.equalsIgnoreCase("ProductA")){
            return new ProductA();
        } else if(type.equalsIgnoreCase("ProductB")){
            return new ProductB();
        } else if(type.equalsIgnoreCase("ProductC")){
            return new ProductC();
        }
        return null;
    }
}
  • 客户端使用该工厂的实例,通过传递信息来获取实体类的对象
public class Client{

    public void getProductInstance(){
        Factory factory = new Factory();
        Product productA = factory.getProduct("ProductA");
        productA.function();

        Product productB = factory.getProduct("ProductB");
        productB.function();
    }
}

优缺点

  • 优点:遵循开放-封闭原则,保留了封装对象创建过程的优点,降低客户端和工厂的耦合性
  • 缺点:每增加一个产品,相应的也要增加一个子工厂,加大了额外的开发量

相关文章

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

  • 【设计模式】- 工厂模式

    工厂模式分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。 工厂模式:靠工厂生产对象 简单工厂模式中只有一个工厂...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

  • Java设计模式——工厂模式

    工厂模式简单工厂模式工厂方法模式抽象工厂模式 1.简单工厂模式 1.基本介绍1)简单工厂模式也叫静态工厂模式,是属...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

网友评论

      本文标题:工厂模式

      本文链接:https://www.haomeiwen.com/subject/kcjuvttx.html