不修改已有代码,而是添加代码
不和所有类打交道,只和总接口的实现类打交道
public class Cilent {

public static void main(String[] args) {

    Car c1=new AudiFactory().createCar();
    Car c2=new ByadiFactory().createCar();
    Car c3=new BenzFactory().createCar();

    c1.run();
    c2.run();
    c3.run();
}

}

接口:
public interface Car {

void run();
}
实现1:
public class Benz implements Car {

public void run()
{
    System.out.println("Benz");
}

}
实现2:
public class Byadi implements Car{

public void run()
{
    System.out.println("Byadi");
}

}
实现3:

public class Audi implements Car {

public void run()
{
    System.out.println("Audi");
}

}
工厂:
接口:

public interface CarFactory {

Car createCar();

}
实现1:

public class AudiFactory implements CarFactory{

public Car createCar()
{
    return new Audi();
}

}
实现2:

public class BenzFactory implements CarFactory {

public Car createCar()
{
    return new Benz();
}
}

实现3:

public class ByadiFactory implements CarFactory {

public Car createCar()
{
    return new Byadi();
}
}