工厂的进化

本文通过一个汽车生产示例,逐步介绍简单工厂、工厂方法和抽象工厂模式。从最初客户端与具体Car类耦合,到简单工厂实现解耦,再到工厂方法应对品牌扩展,最后引入抽象工厂以适应更多车型需求。随着业务复杂度增加,如何进一步扩展抽象工厂以应对更多车类型是后续思考的问题。
摘要由CSDN通过智能技术生成

本文从一个简单示例的需求不断衍化过程,来分析理解简单工厂,工厂方法,抽象工厂模式。

首先看一下初始示例

public interface Car {
   

    public void drive();
}

public class BenzCar implements Car {
   

    @Override
    public void drive() {
        System.out.println("Benz Car drived on the way!");
    }
}

public class BmwCar implements Car{
   

    @Override
    public void drive() {
        System.out.println("Bmw car drived on the way!");
    }
}

public class PorscheCar implements Car {
   

    @Override
    public void drive() {
        System.out.println("Porsche car drived on the way!");
    }
}

public class Client {
   

    public static void main(String[] args){
        Car car;
        car = new BenzCar();
        car.drive();

        car = new BmwCar();
        car.drive();
    }
}

客户端与具体的Car实现类耦合,我们想到优化的第一步是把获得汽车的工作转移到工厂类,使用简单工厂把生产Car的逻辑做一层封装实现解耦,于是有了下面的代码
SimpleFactory

public class SimpleCarFactory {

    public Car createCar(String car){
        Car newCar = null;
        if("Benz".equals(car)){
            newCar = new BenzCar();
        }else if("Bmw".equals(car)){
            newCar = new BmwCar();
        }else if("Porsche".equals(car)){
            newCar = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值