设计模式之工厂模式

工厂模式

核心本质 :实例化对象不使用new,使用工厂方法代替。
将调用者和我们的实现类进行解耦。
三种模式

  • 简单工厂
  • 工厂方法
  • 抽象工厂
    在这里插入图片描述
简单工厂
public interface Car {
    //实现跑的功能
    void name();
}
public class Tesla implements Car {
    @Override
    public void name() {
        System.out.println("我是特斯拉,贵是我的强项");
    }
}
public class Wuling implements Car {

    @Override
    public void name() {
        System.out.println("我是秋名山车神五菱宏光");
    }
}

实现的方法

常规,不仅要了解接口,还要了解有哪几个类
 Car car = new Wuling();
 工厂方法,不用关注里面的相关细节参数。
 public class CarFactory {
    public static Car getCar(String str){
        if ("五菱".equals(str)){
            return new Wuling();
        }else if ("特斯拉".equals(str)){
            return new Tesla();
        }
        return null;
    }
}
Car car = CarFactory.getCar("五零"

图示
在这里插入图片描述

缺点
当新添加一个类的时候,需要在类的工厂进行响应的实现。

工厂方法模式

使用工厂方法模式可以解决开闭原则的问题,之前每次增加一个实现类需要在工厂中进行修改。每个种类的车都有一个自己的车工厂。

public interface CarFactory  {

    Car getCar();
}
public class WulingFactory implements CarFactory {
    @Override
    public Car getCar() {
        return new Wuling();
    }
}
获得实例
Car car = new WulingFactory().getCar();

新增一个车,需要添加两个类,一个车的类,还有一个实现车工厂的类,可以满足开闭原则
在这里插入图片描述
对比
在这里插入图片描述

抽象工厂模式

生产工厂的工厂
在这里插入图片描述
抽象工厂关注的是一个族,生产出来的工厂能够实现该产品族的任意一个产品等级

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
消费之只需要面向小米工厂或者华为工厂进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值