设计模式随笔(二):抽象工厂模式

工厂模式介绍

  工厂模式具体包括:简单工厂,工厂方法,抽象工厂这三种,由简单->复杂,可以理解为把对象的创建过程进行了抽象,也可以理解为将创建对象的过程进行封装,作为client仅仅需要使用对象,而不关心创建对象的具体过程。创建型的设计模式基本都是遵循这样一个原则。

抽象工厂

UML图说明

1.抽象工厂角色:具体工厂必须实现这个接口

2.具体工厂角色:实现抽象工厂角色接口,具体创建产品的逻辑在实现类完成

3.抽象产品角色:所有产品的超类,负责实现产品共性的抽象定义

4.具体产品角色:实现抽象产品角色,负责具体的逻辑和功能

使用场景

  • 一个系统不依赖于产品线实例如何被创建、组合和表达的细节。

  • 系统中有多于一个的产品线,而每次只使用其中某一产品线。

  • 一个产品线(或是一组没有任何关系的对象)拥有相同的约束。

我们来造个车吧

抽象工厂角色:

/**
 * 抽象工厂接口
 */
public interface Factory {

    /**
     * 传入产品类型参数,返回不同的产品,如:汽车,电脑,食物等
     * @param productType 产品类型
     * @return Product 返回抽象的产品定义
     */
    public Product createProduct(String productType);

}

具体工厂角色:

  这是个汽车厂

/**
 * 汽车厂
 **/
public class CarFactory implements Factory {
    @Override
    public Product createProduct(String productType) {
        System.out.println("开始生产嘀嘀嘀....");
        return new Car();
    }
}

抽象产品角色:

public interface Product {

    public void product();

}

具体产品角色:

public class Car implements Product {

    @Override
    public void product() {
        System.out.println("这是量跑的飞起的汽车... ...污...污...污...");
    }
}

测试:

public class Test {
    public static void main(String[] args) {
        Factory carFactory = new CarFactory();
        Product car = carFactory.createProduct("汽车");
        car.product();
    }
}
/*
输出

开始生产....汽车
这是量跑的飞起的汽车... ...污...污...污...

*/

原文地址:https://www.cnblogs.com/chylcblog/p/13229439.html