设计模式之工厂模式(factory pattern)

基本定义

工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法模式让实例化推迟到子类。

模式结构

Product :抽象产品。所有的产品必须实现这个共同的接口,这样一来,使用这些产品的类既可以引用这个接口。

ConcreteProduct:具体产品。

Creator:抽象工厂。它实现了所有操纵产品的方法,但不实现工厂方法。Creator所有的子类都必须要实现factoryMethod()方法。

ConcreteCreator:具体工厂。制造产品的实际工厂。它负责创建一个或者多个具体产品。

 

模式实现:

Product 抽象产品类

 

ConcreteProduct 具体产品类

 

 

Factory 抽象工厂类

 

ConcreteFactory 具体工厂类

 

测试类

 

执行结果

09:46:41.447[main]INFOcom.yanyuan.gof.build.factory.v2.HuaweiPhone - 华为手机拨打貂蝉电话

09:46:41.463[main]INFOcom.yanyuan.gof.build.factory.v2.IPhone - iPhone手机拨打小乔电话

优缺点

优点

在工厂方法中,用户只需要知道所要的产品的具体工厂,无须关系具体的创建过程,甚至不需要具体产品类的名称。

在系统增加新产品时,我们只需要增加一个具体的产品类和实现工厂,无需对原工厂进行任何修改,很好的符合了“开闭原则”

缺点

每次增加一个产品时,都需要增加一个具体类和对象实现工厂,系统中类的个数会成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖

总结

工厂方法模式完全符合“开闭原则”

工厂方法模式使用继承,将对象委托给子类,通过子类实现工厂方法来创建对象

在工厂方法模式中,创建者通常包含依赖于抽象的产品代码,而这些抽象产品是由子类创建的,创建者不需要知道制作哪种具体产品

 
posted @ 2020-04-20 10:49  昨夜黄花今朝狼  阅读(188)  评论(0编辑  收藏  举报