FACTORY METHOD(工厂方法)—对象创建型模式

工厂方法【factory method】

  • 什么是工厂方法
    定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的
    实例化延迟到其子类。别名政策(Virtual Constructor)

  • 什么场景会用到工厂方法
    工厂方法模式能够封装具体类型的实例化,在抽象的factory中,任何其他实现的方法,都可能使用到这个工厂方法所制造出来的产品,但只有子类真正实现这个工厂方法并创建产品。通俗一点就是,工厂方法让子类决定要实例化的类是哪一个。但是不要错误理解,所谓的‘决定’,并不是指模式允许子类本身在运行时做决定,而是在编写创建者类的时候,不需要知道实际创建的产品是哪一个。选择了使用哪个子类,自然就决定了实际创建的产品是哪一个

在这里插入图片描述

public abstract class Car {

    protected String brand;

    protected Car(String brand) {
        this.brand = brand;
    }

    protected void create(){
        System.out.println(brand + " is created.");
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }
}

public class Havel extends Car {

    public Havel(String brand) {
        super(brand);
    }

}
public class Audi extends Car {

    public Audi(String brand) {
        super(brand);
    }
    
}

public interface CarFactory {

    Car createNew();
}
public class HavelFactory implements CarFactory{

    @Override
    public Car createNew() {
        return new Havel("havel");
    }
}

public class AutiFactory implements CarFactory {

    @Override
    public Car createNew() {
        return new Audi("audi");
    }
}
public class AbstractMethodTest {

    public static void main(String[] args) {
        CarFactory factory = new AutiFactory();
        Car car = factory.createNew();

        car.create();
    }

}
  • 适用性
    • 当一个类不知道它所必须创建的对象的类的时候。
    • 当一个类希望由它的子类来指定它所创建的对象的时候。
    • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类
    是代理者这一信息局部化的时候

相关参考:
<大话设计模式>,<设计模式,可复用面向对象软件的基础>,<Head First 设计模式>
源码在此

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值