Java实现工厂方法模式

什么是工厂方法模式

工厂方法模式定义一个创建对象的接口,让实现该接口的子类来创建所需要的对象。

工厂方法和简单工厂方法的区别:

  • 简单工厂方法模式将创建对象的过程放在静态方法中实现,而工厂方法模式让创建对象的过程放在子类中实现;
  • 简单工厂方法模式修改新增违背开闭原则,而工厂方法模式则是通过子类来创建对象;

需求描述

宝马品牌车有宝马X1、X3、X5等系列,这三个系列车分别由三个工厂创建,这里以工厂方法模式来实现该例子。

UML类图如下:
poc

X1Factory、X3Factory、X5Factory工厂都实现工厂接口BMWFactory,并实现createCar方法。
X1Car、X3Car、X5Car都实现实体BMWCar接口,并实现run方法。

代码实现

创建系列车类

创建IBMWCar接口,并定义run方法。

public interface IBMWCar {
    void run();
}

创建宝马X1车类,并实现IBMWCar接口,实现run方法。

public class X1Car implements IBMWCar {
    @Override
    public void run() {
        System.out.println("X1Car run");
    }
}

创建宝马X3车类,并实现IBMWCar接口,实现run方法。

public class X3Car implements IBMWCar {
    @Override
    public void run() {
        System.out.println("X3Car run");
    }
}

创建宝马X5类,并实现IBMWCar接口,实现run方法。

public class X5Car implements IBMWCar {
    @Override
    public void run() {
        System.out.println("X5Car run");
    }
}
创建工厂接口和工厂子类

创建工厂接口,定义createCar方法。

public interface IBMWFactory {
    public IBMWCar createCar();
}

创建X1工厂类,并实现工厂接口,实现createCar方法,创建X1Car对象。

public class X1Factory implements IBMWFactory {
    @Override
    public IBMWCar createCar() {
        return new X1Car();
    }
}

创建X3工厂类,并实现工厂接口,实现createCar方法,创建X3Car对象。

public class X3Factory implements IBMWFactory {
    @Override
    public IBMWCar createCar() {
        return new X3Car();
    }
}

创建X5工厂类,并实现工厂接口,实现createCar方法,创建X5Car对象。

public class X5Factory implements IBMWFactory {
    @Override
    public IBMWCar createCar() {
        return new X5Car();
    }
}

测试

public class Test {

    public static void main(String[] args) {
        // 创建X1工厂类,并创建X1车
        X1Factory x1Factory = new X1Factory();
        IBMWCar carX1 = x1Factory.createCar();
        carX1.run();

        // 创建X3工厂类,并创建X3车
        X3Factory x3Factory = new X3Factory();
        IBMWCar carX3 = x3Factory.createCar();
        carX3.run();

        // 创建X5工厂类,并创建X5车
        X5Factory x5Factory = new X5Factory();
        IBMWCar carX5 = x5Factory.createCar();
        carX5.run();
    }
}

运行结果:

X1Car run
X3Car run
X5Car run

以上便是工厂方法模式的实现,相比简单工厂方法,工厂方法模式符合单一职责原则和开闭原则,让扩展变得简单。

示例代码:factory_method

个人公众号,喜欢的可以关注一下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ruiurrui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值