一. 概念是不同工厂方法模式的一个特殊实现。
二. 实现既然是工厂模式,就举一个工厂的例子吧。 假设一个工厂生产交通工具,包括火车和汽车,我就来模拟这个工厂模式。
Test.java public class Test { public static void main(String[] args) { Car car =(Car) VehicleFactory.getVehicle(Vehicle.CAR);//工厂类生产汽车 Train train = (Train) VehicleFactory.getVehicle(Vehicle.TRAIN);//工厂类生产火车 car.run(); train.run(); } } 测试类,用工厂类分别生产一辆汽车和一列火车。
Vehicle.java public abstract class Vehicle { public static String CAR = "car"; public static String TRAIN = "train"; public abstract void run(); } 一个车的抽象类,包含一个run方法。
Car.java public class Car extends Vehicle {
@Override public void run() { System.out.println("car is running"); }
} 继承与Vehicle, 用于模拟Car。
Train.java public class Train extends Vehicle {
@Override public void run() { System.out.println("train is running"); }
} 继承与Vehicle,用于模拟Train
VehicleFactory.java public class VehicleFactory { public static Vehicle getVehicle(String type){ if(type.equals(Vehicle.CAR)){ return new Car(); }else if(type.equals(Vehicle.TRAIN)){ return new Train(); }else{ return null; } } } 简单工厂类,用于生产Vehicle。
|