工厂模式:我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象
1:简单工厂模式
public interface Vehicle {
//出行
void gettingAround();
}
class RunCar implements Vehicle{
@Override
public void gettingAround() {
System.out.println("跑车出行");
}
}
class BusCar implements Vehicle{
@Override
public void gettingAround() {
System.out.println("公共汽车出行");
}
}
class VehicleFactroy {
public static Vehicle create(Class<?> clazz){
if(clazz.getName().equals(RunCar.class.getName())){
return new RunCar();
}else if (clazz.getName().equals(BusCar.class.getName())){
return new BusCar();
}else {
throw new RuntimeException("请传递BusCar类对象 或者 RunCar类对象");
}
}
}
class TestDemo{
public static void main(String[] args) {
VehicleFactroy.create(RunCar.class).gettingAround();
VehicleFactroy.create(BusCar.class).gettingAround();
VehicleFactroy.create(Vehicle.class).gettingAround();
}
}
2.工厂方法模式
public interface Vehicle {
//出行
void gettingAround();
}
class RunCar implements Vehicle{
@Override
public void gettingAround() {
System.out.println("跑车出行");
}
}
class BusCar implements Vehicle{
@Override
public void gettingAround() {
System.out.println("公共汽车出行");
}
}
interface VehicleFactroy {
Vehicle create();
}
//RunCar工厂
class RunCarFactroy implements VehicleFactroy{
@Override
public Vehicle create() {
return new RunCar();
}
}
//BusCar工厂
class BusCarFactroy implements VehicleFactroy{
@Override
public Vehicle create() {
return new BusCar();
}
}