public interface Car {
void makeCar();
}
public class Bugatti implements Car {
@Override
public void makeCar() {
System.out.println(“Bugatti Is Made Success”);
}
}
public class Lamborghini implements Car {
@Override
public void makeCar() {
System.out.println("Lamborghini Is Made Success");
}
}
public class Pagani implements Car {
@Override
public void makeCar() {
System.out.println(“Pagani Is Made Success”);
}
}
public class CarFactory {
public Car getCar(String CarName) {
if (CarName == null) return null;
switch (CarName) {
case “Lamborghini”:
return new Lamborghini();
case “Bugatti”:
return new Bugatti();
case “Pagani”:
return new Pagani();
default:
return null;
}
}
}
public class CarFactory2 {
public static Car instance(String carKindPath) {
Car car = null;
try {
car = (Car) Class.forName(carKindPath).newInstance();
} catch (Exception e) {
System.out.println(e.getMessage());
}
return car;
}
}
要点在于方法的返回值是接口,而返回的是该接口的实现类
public static void main(String[] args) {
CarFactory carFactory =new CarFactory();
Car L=carFactory.getCar(“Lamborghini”);
L.makeCar();
Car B=carFactory.getCar(“Bugatti”);
B.makeCar();
Car P=carFactory.getCar(“Pagani”);
P.makeCar();
}
//利用反射制造的工厂的使用案例
Car car = CarFactory2.instance(“Factory_Pattern.impl.Bugatti”);
if (car != null) {
car.makeCar();
}
USB Microphone https://www.soft-voice.com/
Wooden Speakers https://www.zeshuiplatform.com/
亚马逊测评 www.yisuping.cn
深圳网站建设www.sz886.com