美文网首页
设计模式——工厂模式

设计模式——工厂模式

作者: Swy2w | 来源:发表于2017-05-05 10:06 被阅读28次

定义

定义一个用于创建对象的接口,让子类去决定实例化哪个类

使用场景

在任何需要生成复杂的对象的地方我们都可以使用工厂模式。复杂对象适合工厂模式,如果是直接new操作就可以创建的对象就无需使用了

UML图

简单工厂模式UML 工厂模式UML.jpg

图1表示的是简单工厂模式,我们没有创建抽象工厂类,因为有时候我们只需要一个工厂。但是如果有时候我们需要多个工厂来生成不同的产品就会使用到图2。

示例

抽象产品类:

public abstract class Product {
    /**
     * 产品类的抽象方法
     * 具体的产品类实现具体的方法
     */
    public abstract void method();
}

具体产品类A:

public class ConcreteProductA extends Product{
    /**
     * 实现产品类的抽象方法
     */
    @Override
    public void method() {
        System.out.println("这是具体的产品A");
    }
    //产品A的其他方法...
    public void ProductA(){
        
    }
}

具体产品类B:

public class ConcreteProductB extends Product{
    /**
     * 实现产品类的抽象方法
     */
    @Override
    public void method() {
        System.out.println("这是具体的产品B");
    }
    //产品B的其他方法...
    public void ProductB(){
        
    }
}

抽象工厂类:

public abstract class Factory {
    /**
     * 抽象工厂方法 
     * 具体实现由子类实现 
     * @return 具体的产品对象
     */
    public abstract Product createProduct();
}

具体工厂类A:

public class ConcreteFactoryA extends Factory{

    @Override
    public Product createProduct() {
        return new ConcreteProductA();
    }
}

具体工厂类B:

public class ConcreteFactoryB extends Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProductB();
    }
}

客户类:

public class Client {
    public static void main(String[] args) {
        Factory factoryA=new ConcreteFactoryA();
        Product productA=factoryA.createProduct();
        productA.method();
        
        Factory factoryB=new ConcreteFactoryB();
        Product productB=factoryB.createProduct();
        productB.method();
    }
}

上面示例的几个角色都很简单,只有分为四大模块
一是抽象工厂,为工厂模式的核心;

二是具体工厂,实现了具体的工厂业务逻辑;

三是抽象产品,是工厂模式所创建的产品的父类;

四是具体产品,实现抽象产品的某个具体产品的对象;

在Client类中我们分别创建不同的具体工厂类,并且通过具体工厂类的对象生成了具体的产品对象。这种需要哪个产品就生产哪一个比较常见,我在书上还看到有利用反射的方式来更加简洁的生成具体的产品对象。

相关文章

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 常用设计模式

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

网友评论

      本文标题:设计模式——工厂模式

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