工厂模式-简单工厂模式

  1. 简单工厂
  2. 工厂方法
  3. 抽象工厂

简单工厂:为了避免同过new对象对此创建对象,因为每次创建对象的过程是复杂的,所以我们可以通过建一个工厂,封闭创建对象的过程,客户端调用无需关心其中的实现过程。在这里插入代码片

//汽车的借口
public interface Car {
    void run();
    void setColor(String color);
    void addTyre(String tyre);
}
//具体的车的类型
class  BMW implements Car{

    private String  color;

    private String tyre;

    //加上四个轮胎
    public void addTyre(String tyre){
        this.tyre=tyre;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public void run() {
        System.out.println(color+"的奔驰汽车奔跑。。。");
    }
}

class  Benz implements Car{

    private String  color;

    private String tyre;

    //加上四个轮胎
    public void addTyre(String tyre){
        this.tyre=tyre;
    }

    public void setColor(String color) {
        this.color = color;
    }


    @Override
    public void run() {
        System.out.println(color+"的奔驰汽车奔跑。。。");
    }
}

class  Audi implements Car{

    private String  color;

    private String tyre;

    //加上四个轮胎
    public void addTyre(String tyre){
        this.tyre=tyre;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public void run() {
        System.out.println(color+"的奥迪汽车奔跑。。。");
    }
}

//客户端
public class Client {
    public static void main(String[] args) {
        Car car=new BMW();
        car.setColor("red");
        car.addTyre("米其林");
        car.run();
    }
}

这是不在使用工厂模式下创建对象的过程,此过程中如果创建一个具体汽车的过程相当复杂,就要在每次new汽车对象时都设置多个参数,并且添加多个零件,并还有零件的组装过程,为此我们不需要在客户端展示这些复杂的过程,因此我们需要工厂模式,一开始我们先介绍简单工厂模式!

在这里插入图片描述

角色:
Factory(工厂):核心部分,负责实现创建所有产品的内部逻辑,工厂类可以被外界直接调用,创建所需对象
Product(抽象类产品):工厂类所创建的所有对象的父类,封装了产品对象的公共方法,所有的具体产品为其子类对象
ConcreteProduct(具体产品):简单工厂模式的创建目标,所有被创建的对象都是某个具体类的实例。它要实现抽象产品中声明的抽象方法(有关抽象类)

public class SimpleFactory {

    public Car create(String type){
        if("BMW".equals(type)){
            Car car=new BMW();
            car.setColor("red");
            car.addTyre("米其林");
            return car;
        }else if ("Benz".equals(type)){
            Car car=new Benz();
            car.setColor("blue");
            car.addTyre("米其林二代");
            return car;
        }else if ("Auti".equals(type)){
            Car car=new Audi();
            car.setColor("write");
            car.addTyre("米其林三代");
            return car;
        }else {
            System.out.println("该工厂不生产此类汽车");
            return null;
        }
    }
}
public class Client {
    public static void main(String[] args) {
        SimpleFactory factory=new SimpleFactory();
        factory.create("BMW").run();
        factory.create("Audi").run();
        factory.create("Benz").run();
    }
}

总结:简但工厂就是为了将复杂的生产对象的过程放入工厂中,这样客户端只需要了解工厂的创建方法即可,使用方便。
缺点:因为工厂里要增加一个产品时,需要改动,增加分支,违反了开闭原则。见下一张工厂方法模式!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值