《设计模式》2.简单工厂模式(创建型)

此处以车辆(Vehicle)为例,有三种车:小轿车(Car)、公交车(Bus)、出租车(Taxi)。

public interface Vehicle {
    /**
     * 介绍说明
     */
    void specification();
}
public class Car implements Vehicle {
    @Override
    public void specification() {
        System.out.println("This is a Car.");
    }
}
public class Bus implements Vehicle {
    @Override
    public void specification() {
        System.out.println("This is a Bus.");
    }
}
public class Taxi implements Vehicle {
    @Override
    public void specification() {
        System.out.println("This is a Taxi.");
    }
}
public enum VehicleType {
    CAR,
    BUS,
    TAXI;
}

静态工厂模式通过静态方法访问,根据调用传入的参数选择不同的类型实例化返回。
随着车辆类型的增加/删除都需要改动工厂类,违反了开放-封闭原则

public class VehicleFactory {
    public static <T extends Vehicle> T create(VehicleType vehicleType) {
        switch (vehicleType) {
            case CAR:
                return (T) new Car();
            case BUS:
                return (T) new Bus();
            case TAXI:
                return (T) new Taxi();
            default:
                throw new IllegalArgumentException("vehicle type is illegal: " + vehicleType);
        }
    }
}
public class VehicleCreator {
    public static void main(String args[]) {
        Car car = VehicleFactory.create(VehicleType.CAR);
        car.specification();
        
        Bus bus = VehicleFactory.create(VehicleType.BUS);
        bus.specification();
        
        Taxi taxi = VehicleFactory.create(VehicleType.TAXI);
        taxi.specification();
    }
}

输出:

This is a Car.
This is a Bus.
This is a Taxi.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值