设计模式-工厂方法设计模式

来源:互联网 发布:淘宝仓管的工作 编辑:程序博客网 时间:2024/05/20 06:23

模式概述:工厂方法模式又称工厂模式,属于类的创建型模式。在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类决定究竟应该实例化哪一个类。

代码示例:

public class Audi extends Car {    public Audi() {        System.out.println("创造了台奥迪汽车");    }}
public class BMW extends Car {    public BMW() {        System.out.println("创造了台宝马汽车");    }}

工厂接口及实现类:

public interface CreateCar {    //创造汽车的方法    Car createCar();}
public class FactoryAudi implements CreateCar {    @Override    public Audi createCar() {        return new Audi();    }}
public class FactoryBMW implements CreateCar {    @Override    public BMW createCar() {        return new BMW();    }}

测试类及结果:
这里写图片描述

总结:工厂方法模式和简单工厂模式的主要区别是,简单工厂模式是把创建汽车的职能都放在一个类里面,而工厂方法模式则把不同的产品放在实现了工厂接口的不同工厂类里面,这样就算其中一个工厂类出了问题,其他工厂类也能正常工作,互相不受影响,以后增加新产品,也只需要新增一个实现工厂接口工厂类,就能达到,不用修改已有的代码。
但工厂方法模式也有他局限的地方,那就是当面对的产品有复杂的下级分类的时候,例如,汽车有很多的型号,每种汽车都或许配有空调或者不同的发动机等等。如果用工厂方法模式来设计这个产品系统,就必须为每个型号的产品创建一个对应的工厂类,当有数百种甚至上千种产品的时候,也必须要有对应的上百成千个工厂类,对于以后的维护来说,简直又是一场灾难。
后面的抽象工厂设计模式可以解决这种问题。

0 0