美文网首页
工厂模式

工厂模式

作者: OPice | 来源:发表于2019-09-30 10:31 被阅读0次

    介绍

    工厂模式属于创建对象模式,提供给客户端共同创建对象的接口,不暴露创建对象的逻辑。
    统一生产对象,便于管理和解耦。
    例如:想要一辆汽车,直接去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
    

    相关文章

      网友评论

          本文标题:工厂模式

          本文链接:https://www.haomeiwen.com/subject/sfjcpctx.html