package fac;
//定义接口
interface Car{
    public void run();
    public void stop();
}
//具体实现类
class Benz implements Car{
    public void run(){
        System.out.println("Benz开始启动了。。");
    }
    public void stop(){
        System.out.println("Benz停车了。。");
    }
}class Ford implements Car{
    public void run(){
        System.out.println("Ford开始启动了");
    }
    public void stop(){
        System.out.println("Ford停车了。");
    }
}
//工厂
class Factory{
    public static Car getCarInstance(String type){
        Car c=null;
        if("Benz".equals(type)){
            c=new Benz();
        }
        if("Ford".equals(type)){
            c=new Ford();
        }
        return c;
    }
}
public class FactoryDemo02 {    public static void main(String[] args) {
        Car c=Factory.getCarInstance("Benz");
        if(c!=null){
            c.run();
            c.stop();
        }else{
            System.out.println("造不了这种汽车");
        }
            }}
为要写一个Car接口???

解决方案 »

  1.   

    用接口是为了有所约束,毕竟你的工厂不是上帝,不能包产万物。
    从这个问题楼主可以感受一下开闭原则,追求灵活的时候,要点约束。如果一点约束都没有,Factory直接产出Object对象,那这样的工厂在使用的时候,意外就会比较多。
      

  2.   


    你这里是用接口 new 的,这样灵活性更高,不用每进来一个牌子的车,就用某个牌子的车去new .
    直接用接口构造,实例化某个牌子的车。
    多态的体现
      

  3.   

    1、Car 就像一像一个磨具,2、如果实体类改变,接口不需要任何修改-降低耦合性,3、约束性。4、并容易实现java多态
      

  4.   

    工厂统一对外提供接口对象,外部通过调用工厂生成的实例确不需要管具体的实现,就是这样,当然也可以用Abstract类