设计模式之工厂方法模式

本文介绍了工厂方法设计模式,通过创建一个抽象工厂来生产可移动产品,如汽车和飞机。该模式遵循开闭原则,允许添加新产品时只需扩展具体产品类,而无需修改原有代码。文章提供了具体的Java代码实现,包括抽象产品接口Moveable、具体产品类Car和Plane以及工厂类MoveableFactory。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本篇介绍设计模式中的工厂方法模式,所谓的工厂方法就是抽象出一个工厂可以创建一类产品,具体的产品继承于抽象出来的一类产品有各自的实现,主要还是遵循了开闭原则,总结一句话就是,抽象工厂创建一类产品,具体的实例又是通过这一类产品的具体产品类来实现。以后如果增加新的产品,只需要集成抽象的产品类然后实现具体的产品就好,调用的时候还是通过抽象产品工厂来创建。参考类图如下:

 1、编码测试场景描述

定义一种可移动的产品,并用工厂创建,这里可移动的产品属于抽象产品类,具体的产品有汽车和飞机属于具体产品分别集成了可移动的产品抽象类,然后创建一个抽象的工厂来制造具体的可移动产品。

编码层面分析,这里设计一个可移动的抽象产品类Moveable,两个具体的产品类CarPlan分别继承自Moveable,然后创建一个MoveableFactory抽象工厂来创建具体的可移动产品。

2、具体编码实现

  • 可移动产品抽象类

package com.czing.designpatterns.factorymethod;

/**
 * @Description
 * 抽象的产品类,定义抽象产品的属性
 * @Author wangchengzhi
 * @Date 2023/5/15 20:21
 */
public interface Moveable {
    void go();
}
  • 具体产品汽车类(Car) 

package com.czing.designpatterns.factorymethod;

/**
 * @Description TODO
 * @Author wangchengzhi
 * @Date 2023/5/15 20:22
 */
public class Car implements Moveable {
    @Override
    public void go() {
        System.out.println("汽车启动wuwuwuwu~~~~");
    }
}
  • 具体产品飞机类(Plan) 

package com.czing.designpatterns.factorymethod;

/**
 * @Description TODO
 * @Author wangchengzhi
 * @Date 2023/5/15 20:23
 */
public class Plan implements Moveable {
    @Override
    public void go() {
        System.out.println("飞机起飞嗖嗖嗖嗖~~~~~~");
    }
}
  •  创造具体移动产品的工厂类

package com.czing.designpatterns.factorymethod;

/**
 * @Description
 * 创建产品的工厂,得到不同的具体实例
 * @Author wangchengzhi
 * @Date 2023/5/15 20:30
 */
public class MoveableFactory {
    private static Moveable moveable;

    public static Moveable createMoveable(Class c) throws Exception {
        moveable= (Moveable)Class.forName(c.getName()).newInstance();
        return moveable;
    }

}
  • 测试运行验证

package com.czing.designpatterns.factorymethod;

/**
 * @Description TODO
 * @Author wangchengzhi
 * @Date 2023/5/15 20:34
 */
public class main {
    public static void main(String[] args) throws Exception {
        Moveable car = MoveableFactory.createMoveable(Car.class);
        car.go();
        Moveable plan = MoveableFactory.createMoveable(Plan.class);
        plan.go();
    }
}

结语

工厂方法模式,主要在于体会,具体产品通过抽象工厂来创建,添加不同产品的时候 只需要维护对应的新加产品的具体产品实现类,其他的可以直接通过抽象工厂来创建。以上编码可以直接运行验证,欢迎大家分享交流。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值