1700446329
1700446330
class FordCar implements Car{
1700446331
1700446332
};
1700446333
1700446334
//具体产品类
1700446335
1700446336
class BuickCar implements Car{
1700446337
1700446338
};
1700446339
1700446340
//工厂类
1700446341
1700446342
class CarFactory{
1700446343
1700446344
//生产汽车
1700446345
1700446346
public static Car createCar(Class<?extends Car>c){
1700446347
1700446348
try{
1700446349
1700446350
return(Car)c.newInstance();
1700446351
1700446352
}catch(Exception e){
1700446353
1700446354
e.printStackTrace();
1700446355
1700446356
}
1700446357
1700446358
return null;
1700446359
1700446360
}
1700446361
1700446362
}
1700446363
1700446364
这是最原始的工厂方法模式,有两个产品:福特汽车和别克汽车,然后通过工厂方法模式来生产。有了工厂方法模式,我们就不用关心一辆车具体是怎么生成的了,只要告诉工厂“给我生产一辆福特汽车”就可以了,下面是产出一辆福特汽车时客户端的代码:
1700446365
1700446366
public static void main(String[]args){
1700446367
1700446368
//生产车辆
1700446369
1700446370
Car car=CarFactory.createCar(FordCar.class);
1700446371
1700446372
}
1700446373
1700446374
这就是我们经常使用的工厂方法模式,但经常使用并不代表就是最优秀、最简洁的。此处再介绍一种通过枚举实现工厂方法模式的方案,谁优谁劣你自行评价。枚举实现工厂方法模式有两种方法:
1700446375
1700446376
(1)枚举非静态方法实现工厂方法模式
1700446377
1700446378
我们知道每个枚举项都是该枚举的实例对象,那是不是定义一个方法可以生成每个枚举项的对应产品来实现此模式呢?代码如下:
[
上一页 ]
[ :1.700446329e+09 ]
[
下一页 ]