zl程序教程

您现在的位置是:首页 >  APP

当前栏目

07.工厂模式-抽象工厂

2023-03-31 10:55:38 时间

public interface Car {
    String excute();
}

public class BenchiCar implements Car {
    public String excute() {
        System.out.println("奔驰车生产....");
        return "OK";
    }
}

public class BwmCar implements Car {
    public String excute() {
        System.out.println("宝马车生产....");
        return "OK";
    }
}

public class BydCar implements Car {

    public String excute() {
        System.out.println("比亚迪车生产....");
        return "OK";
    }
}

 

public interface Phone {
    void call();
}

public class HuaweiPhone implements Phone{
    public void call() {
        System.out.println("华为手机....");
    }
}

public class XiaomiPhone implements Phone{
    public void call() {
        System.out.println("小米手机....");
    }
}

 

public interface Factory {
    Phone getPhone(String type);
    Car getCar(String carType);
}

public class CarFactory implements Factory{

    public Phone getPhone(String type) {
        return null;
    }

    public Car getCar(String carType) {
        Car car = null;
        if ("benchi".equals(carType)) {
            car = new BenchiCar();
        } else if ("bmw".equals(carType)) {
            car = new BwmCar();
        } else if ("byd".equals(carType)) {
            car = new BydCar();
        }
        return car;
    }
}

public class PhoneFactory implements Factory{
    public Phone getPhone(String type) {
        Phone phone = null;
        if ("Huawei".equals(type)) {
            phone = new HuaweiPhone();
        } else if ("Xiaomi".equals(type)) {
            phone = new XiaomiPhone();
        }
        return phone;
    }

    public Car getCar(String carType) {
        return null;
    }

}

 

public class AbstractFactory {
    public static Factory getFactory(String type){
        if("car".equals(type)){
            return new CarFactory();
        }else if ("phone".equals(type)){
            return new PhoneFactory();
        }
        return null;
    }

}

 

public class AbstractFactoryDemo {
    public static void main(String[] args) {
        Car bwm = AbstractFactory.getFactory("car").getCar("bmw");
        bwm.excute();
    }
}