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();
1700446417
1700446418
}
1700446419
1700446420
(2)通过抽象方法生成产品
1700446421
1700446422
枚举类型虽然不能继承,但是可以用abstract修饰其方法,此时就表示该枚举是一个抽象枚举,需要每个枚举项自行实现该方法,也就是说枚举项的类型是该枚举的一个子类,我们来看代码:
1700446423
1700446424
enum CarFactory{
1700446425
1700446426
FordCar{
1700446427
1700446428
public Car create(){
[
上一页 ]
[ :1.700446379e+09 ]
[
下一页 ]