建造者模式和工厂模式
建造者模式
生活场景
想象要生产一辆汽车,我们是不是有需要有很多个流程?轮胎,车盖,引擎...
你告诉我,想要建造一个什么产品和产品的一些细节(流程等)。我就可以将满足要求的产品给你创建出来。
主要角色对象
产品角色:一个具体的产品对象,通常是继承某个类或者接口。 抽象建造者:创建一个product对象各个部件指定的接口。 具体建造者:实现接口,构造和装配具体的零件。 指挥者:构建一个使用builer接口的对象,用于创建一个复杂的对象、隔离了对象和客户的生产过程,负责控制产品对象的生产过程。注意事项
建造者模式关注的是产品的创建流程顺序,和各个零部件。这是它和工厂模式最大不同点的地方,虽然都是创建者模式,但是其侧重点不同的。
工厂模式
工厂模式分类
简单工厂模式
直接定义一个工厂类来创建其他类的实例。
工厂方法模式
定义一个工厂的接口,让子类工厂去实现接口,决定到底实例化哪一个类,将实例化延迟到子类。 对于每一个产品都提供一个工厂类,在客户端中判断使用哪一个工厂类去创建对象
抽象工厂模式
抽象工厂模式和工厂方法模式类似,可以简单这样认为:当工厂只生产一个产品的时候,就是工厂方法模式,当工厂生产两个或者以上的产品时就演变为抽象工厂模式。
生活场景
想象一下在汽车工厂里面,一辆辆汽车很快就被批发生产出来。你想要一个什么产品,直接来找到产品对应的工厂,工厂就可以创建好后直接返回给你。
主要角色对象
抽象产品角色:描述所有实例的公共接口。 具体产品角色:实现抽象产品的接口,是工厂角色要创建的对象实例。 工厂类:用于被客户端调用,生产一个具体的产品。工厂模式和建造者模式区别
工厂模式实现了对于产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,使用工厂模式不需要关心构建过程,只需要关心产品由哪一个工厂生产即可。而建造者模式则是按照指定的要求去构建产品。它的主要目的是通过组装零配件来产生一个新产品。