打字猴:1.700446367e+09
1700446367
1700446368 //生产车辆
1700446369
1700446370 Car car=CarFactory.createCar(FordCar.class);
1700446371
1700446372 }
1700446373
1700446374 这就是我们经常使用的工厂方法模式,但经常使用并不代表就是最优秀、最简洁的。此处再介绍一种通过枚举实现工厂方法模式的方案,谁优谁劣你自行评价。枚举实现工厂方法模式有两种方法:
1700446375
1700446376 (1)枚举非静态方法实现工厂方法模式
1700446377
1700446378 我们知道每个枚举项都是该枚举的实例对象,那是不是定义一个方法可以生成每个枚举项的对应产品来实现此模式呢?代码如下:
1700446379
1700446380 enum CarFactory{
1700446381
1700446382 //定义工厂类能生产汽车的类型
1700446383
1700446384 FordCar, BuickCar;
1700446385
1700446386 //生产汽车
1700446387
1700446388 public Car create(){
1700446389
1700446390 switch(this){
1700446391
1700446392 case FordCar:
1700446393
1700446394 return new FordCar();
1700446395
1700446396 case BuickCar:
1700446397
1700446398 return new BuickCar();
1700446399
1700446400 default:
1700446401
1700446402 throw new AssertionError(“无效参数”);
1700446403
1700446404 }
1700446405
1700446406 }
1700446407
1700446408 }
1700446409
1700446410 create是一个非静态方法,也就是只有通过FordCar、BuickCar枚举项才能访问。采用这种方式实现工厂方法模式时,客户端要生产一辆汽车就很简单了,代码如下:
1700446411
1700446412 public static void main(String[]args){
1700446413
1700446414 //生产汽车
1700446415
1700446416 Car car=CarFactory.BuickCar.create();
[ 上一页 ]  [ :1.700446367e+09 ]  [ 下一页 ]