GOF设计模式——抽象工厂模式

抽象工厂模式

抽象类

/**
 * 抽象工厂
 */
public abstract class AbstractFactory {
   //汽车
   public abstract VehicleCenter vehicleCenter(String vehicle);
   //颜色
   public abstract VehicleColor vehicleColor(String color);
}
/**
 * 颜色工厂
 */
public class ColourFactory extends AbstractFactory {
    @Override
    public VehicleCenter vehicleCenter(String vehicle) {
        return null;
    }

    @Override
    public VehicleColor vehicleColor(String color) {
        if (color == null) {
            return null;
        }
        if (color.equals("BLACK")) {
            return new BlackVehicleColor();
        } else if (color.equals("BLUE")) {
            return new BlueVehicleColor();
        } else if (color.equals("RED")) {
            return new RedVehicleColor();
        }
        return null;
    }
}
/**
 * 汽车工厂
 */
public class VehicleFactory extends AbstractFactory {
    @Override
    public VehicleCenter vehicleCenter(String vehicle) {
        if (vehicle == null) {
            return null;
        }
        if (vehicle.equals("AD")) {
            return new ADVehicle();
        } else if (vehicle.equals("BM")) {
            return new BMVehicle();
        } else if (vehicle.equals("BC")) {
            return new BCVehicle();
        }
        return null;
    }

    @Override
    public VehicleColor vehicleColor(String color) {
        return null;
    }
}

/**
 * 工厂生产者
 */
public class FactoryProducer {

    public static AbstractFactory getVehicle(String type) {
        if (type.equals("VEHICLE")) {
            return new VehicleFactory();
        } else if (type.equals("COLOR")) {
            return new ColourFactory();
        }
        return null;
    }
}

汽车中心


public class ADVehicle implements VehicleCenter {
    @Override
    public String getVehicle() {
        return "喜提奥迪车辆";
    }
}

public class BCVehicle implements VehicleCenter {
    @Override
    public String getVehicle() {
        return "喜提奔驰车辆";
    }
}


public class BMVehicle implements VehicleCenter {
    @Override
    public String getVehicle() {
        return "喜提宝马车辆";
    }

}

/**
 * 汽车中心
 */
public  interface VehicleCenter {
    String getVehicle();
}

颜色中心

public class BlackVehicleColor implements VehicleColor {

    @Override
    public String getColor() {
        return "黑色的";
    }
}

public class BlueVehicleColor implements VehicleColor {
    @Override
    public String getColor() {
        return "蓝色的";
    }
}

public class RedVehicleColor implements VehicleColor {

    @Override
    public String getColor() {
        return "红色的";
    }
}

/**
 * 汽车颜色中心
 */
public interface VehicleColor {

    String getColor();
}

测试抽象方法

public class TextAbstractFactory {
    public static void main(String[] args) {
        AbstractFactory vehicle = new FactoryProducer().getVehicle("VEHICLE");
        //一款奥迪
        VehicleCenter ad = vehicle.vehicleCenter("AD");
        System.out.println(ad.getVehicle());
        //黑色
        AbstractFactory color = new FactoryProducer().getVehicle("COLOR");
        VehicleColor black = color.vehicleColor("BLACK");
        System.out.println(black.getColor());

    }
}

输出:
喜提奥迪车辆
黑色的
Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值