1700457357
设计模式之禅 8.2 工厂方法模式的定义
1700457358
1700457359
工厂方法模式使用的频率非常高,在我们日常的开发中总能见到它的身影。其定义为:
1700457360
1700457361
Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。)
1700457362
1700457363
工厂方法模式的通用类图如图8-2所示。
1700457364
1700457365
1700457366
1700457367
1700457368
图8-2 工厂方法模式通用类图
1700457369
1700457370
在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。工厂方法模式的变种较多,我们来看一个比较实用的通用源码。
1700457371
1700457372
抽象产品类代码如代码清单8-8所示。
1700457373
1700457374
代码清单8-8 抽象产品类
1700457375
1700457376
public abstract class Product{
1700457377
1700457378
//产品类的公共方法
1700457379
1700457380
public void method1(){
1700457381
1700457382
//业务逻辑处理
1700457383
1700457384
}
1700457385
1700457386
//抽象方法
1700457387
1700457388
public abstract void method2();
1700457389
1700457390
}
1700457391
1700457392
具体的产品类可以有多个,都继承于抽象产品类,其源代码如代码清单8-9所示。
1700457393
1700457394
代码清单8-9 具体产品类
1700457395
1700457396
public class ConcreteProduct1 extends Product{
1700457397
1700457398
public void method2(){
1700457399
1700457400
//业务逻辑处理
1700457401
1700457402
}
1700457403
1700457404
}
1700457405
[
上一页 ]
[ :1.700457356e+09 ]
[
下一页 ]