设计模式之简单工厂模式和抽象工厂模式

本文介绍了设计模式中的简单工厂模式和抽象工厂模式。简单工厂模式包含工厂类、抽象产品角色和具体产品角色,适用于产品种类较少的情况。而抽象工厂模式则更适用于需要创建相关或相互依赖对象的场景,提供了创建一系列相关产品的能力,但增加新产品时所有工厂类需修改,增加了复杂性。
摘要由CSDN通过智能技术生成

目录

1 简单工厂模式

1.1 组成

1.2 简单例子

1.2.1 抽象产品角色

1.2.2 具体产品角色

1.2.3 工厂类角色

1.2.4 顾客测试类

1.3 优缺点

1.3.1 优点

1.3.2 缺点

2 抽象工厂模式

2.1 模式的定义与特点

2.2 模式的结构与实现

2.2.1 模式的结构

2.2.2 案例实现


前面说到有三种工厂模式:

  1. 简单工厂模式(Simple Factory)
  2. 工厂方法模式(Factory Method)
  3. 抽象工厂模式(Abstract Factory)

1 简单工厂模式

简单工模式时类的创建模式,又叫做静态工厂方法(static Factory Method)。简单工厂模式是一个工厂对象决定创建出哪一种产品类的实例。它存在的目的很简单:定义一个创建对象的接口。

1.1 组成

  1. 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
  2. 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
  3. 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

1.2 简单例子

以汽车和汽车工厂为例

1.2.1 抽象产品角色

package simpleFactory;

/**
 * @author Mr.Qing
 * @date 2021/11/8
 */
public interface car {
    void name();
}

1.2.2 具体产品角色

package simpleFactory;

/**
 * @author Mr.Qing
 * @date 2021/11/8
 */
public class tesla implements car{
    @Override
    public void name() {
        System.out.println("特斯拉");
    }
}
package simpleFactory;

/**
 * @author Mr.Qing
 * @date 2021/11/8
 */
public class wuLing implements car{
    @Override
    public void name() {
        System.out.println("五菱");
    }
}

1.2.3 工厂类角色

package simpleFactory;

/**
 * @author Mr.Qing
 * @date 2021/11/8
 */
public class carFactory {
    public static car getCar(String car){
        if (car.equals("wuLing")){
            return new wuLing();
        }
        else if (car.equals("tesla")){
            return new tesla();
        }
        else {
            return null;
        }
    }
}

1.2.4 顾客测试类

package simpleFactory;

/**
 * @author Mr.Qing
 * @date 2021/11/8
 */
public class consumer {
    public static void main(String[] args) {
        car wuLing = carFactory.getCar("wuLing");
        car tesla = carFactory.getCar("tesla");

        wuLing.name();
        tesla.name();
    }
}

 结果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值