前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工厂模式

工厂模式

作者头像
OPice
发布2019-10-23 22:36:28
3310
发布2019-10-23 22:36:28
举报
文章被收录于专栏:D·技术专栏D·技术专栏

介绍

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

实现

1、创建一个Car接口

代码语言:javascript
复制
public interface Car {
    public void run();

    public void stop();
}

2、创建实体类

代码语言:javascript
复制
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、创建一个工厂(类),用于生成实体

代码语言:javascript
复制
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、使用工厂创建对象

代码语言:javascript
复制
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、输出结果

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

Process finished with exit code 0
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.09.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档