工厂模式

介绍

工厂模式属于创建对象模式,提供给客户端共同创建对象的接口,不暴露创建对象的逻辑。
统一生产对象,便于管理和解耦。
例如:想要一辆汽车,直接去4s店提货,而不需要关心汽车如何造出来的。

实现

image.png

1、创建一个Car接口

public interface Car {
    public void run();

    public void stop();
}

2、创建实体类

public class Taxi implements Car {

    @Override
    public void run() {
        System.out.println("打表计价中");
    }

    @Override
    public void stop() {
        System.out.println("本次费用xx元");
    }
}

public class Bus implements Car {
    @Override
    public void run() {
        System.out.println("车辆行人请注意");
    }

    @Override
    public void stop() {
        System.out.println("xxx站到了");
    }
}

public class Sedan implements Car {
    @Override
    public void run() {
        System.out.println("一路向西去大理");
    }

    @Override
    public void stop() {
        System.out.println("抛锚了...");
    }
}

3、创建一个工厂(类),用于生成实体

public class CarFactory {
    public Car getCar(String type) {
        if (type == null) {
            return null;
        }
        if (type.equalsIgnoreCase("taxi")) {
            return new Taxi();
        }
        if (type.equalsIgnoreCase("bus")) {
            return new Bus();
        }
        if (type.equalsIgnoreCase("sedan")) {
            return new Sedan();
        }
        return null;
    }
}

4、使用工厂创建对象

public class FactoryPatternTest {
    public static void main(String[] args) {
        CarFactory carFactory = new CarFactory();
        Car taxi = carFactory.getCar("taxi");
        taxi.run();
        taxi.stop();
        Car bus = carFactory.getCar("bus");
        bus.run();
        bus.stop();
        Car sedan = carFactory.getCar("sedan");
        sedan.run();
        sedan.stop();
    }
}

5、输出结果

打表计价中
本次费用xx元
车辆行人请注意
xxx站到了
一路向西去大理
抛锚了...

Process finished with exit code 0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容