创建型模式之工厂方法模式

工厂方法模式(Factory Method)

定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。

image

构成

1.很多工厂都有一些相同的行为,比如汽车工厂。我们需要抽象这些相同的行为成接口,每个工厂都实现这个接口。

2.生产相同的产品每个工厂所使用的方法可能不同,所以具体如何生产产品由具体工厂实现。

工厂模式两要点:

1.工厂接口是工厂方法模式的核心,与调用者直接交互用来提供产品。

2.工厂实现决定如何实例化产品,是实现扩展的途径,需要有多少种产品,就需要有多少个具体的工厂实现。

适用场景:

1.在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过new就可以完成创建的对象,无需使用工厂模式。

2.工厂模式是一种**典型的解耦模式**,迪米特法则在工厂模式中表现的尤为明显。假如调用者自己组装产品需要增加依赖关系时,可以考虑使用工厂模式。将会大大降低对象之间的耦合度。

3.当需要系统有比较好的扩展性时,可以考虑工厂模式,不同的产品用不同的实现工厂来组装。
//汽车工厂
interface CarFactory {
    void productCar();
}
//保时捷工厂
class PorscheFactory implements CarFactory {
    @Override
    public void productCar() {
        System.out.println("生产保时捷汽车");
    }
}
//拖拉机工厂
class TractorFactory implements CarFactory {
    @Override
    public void productCar() {
        System.out.println("生产拖拉机");
    }
}


public class Main {

    public static void main(String[] args) {
        //保时捷工厂生产保时捷
        CarFactory pf = new PorscheFactory();
        pf.productCar();
        //拖拉机工厂生产拖拉机
        CarFactory tf = new TractorFactory();
        tf.productCar();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值