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

抽丝剥茧——工厂设计模式

作者头像
石的三次方
发布2021-01-05 22:42:51
3090
发布2021-01-05 22:42:51
举报
文章被收录于专栏:石的三次方石的三次方

今天和兄弟们聊一下工厂设计模式。在聊设计模式之前,我们先来聊一聊为什么要用这个设计模式呢?

1. 为什么要用?

「看一个需求」:你有N多类,你需要在每一个类使用之前分别进行一个记录和操作。

「解决方法:」

  • 直接在创建类的时候进行记录和操作;
  • 创建一个类,专门用作创建不同的类;而在实际开发中,我们可以通过面向对象的方式进行一个代码的优化。按类别创建一个父类,直接多态思想接收对应的子类。

「一个图搞明白:」

「我们可以在TrafficFactory中执行我们需要做的操作」

了解了为什么要用工厂设计模式以后,我们来具体看一下工厂设计模式吧

2. 工厂设计模式

2.1 简单方法工厂

「来看一个场景吧」

我和兄弟们一起创建了一个公司,主要业务是交通工具,刚开始我们仅仅生产了一个公交车,划分了一个部门公交车管理部;

随着兄弟们的不断努力,我们又才开始涉足于出租车领域,又划分了一个部门出租车部门;再后来我们又扩充了飞机部门和火车部门;

「这个时候就代表这个公司整体为生产各种交通产品,公司就是那个工厂,为我们管理和生产对应的产品。此时可以理解为一个简单工厂模式」

其实这个场景就是我们上面的那个图,再来看一下

「体现在代码层面:」

「抽象实体」

代码语言:javascript
复制
abstract class Traffic {
    public abstract void run();
}

class Plane extends Traffic{
    public void run(){
        System.out.println("Plane fei................");
    }
}

class Train extends Traffic{
    public void run(){
        System.out.println("Train liu ..................");
    }
}

class Bus extends Traffic{
    public void run(){
        System.out.println("Bus zou............");
    }
}

「工厂:在创建之前进行一系列前置和后置处理」

代码语言:javascript
复制
class TrafficFactory{
    public Plane createPlane(){
        return new Plane();
    }

    public Train createTrain(){
        return new Train();
    }

    public Bus createBus(){
        //before processor
        return new Bus();
        //after processor
    }
}
2.2 抽象工厂模式

还是上面的那个场景,随着我们公司的不断发展,我们又涉猎到了食品领域,于是我们又是按照上面的操作进行了操作,但随着我们涉及领域的不断增加,我们的管理又出现了问题,于是我们又一次修改了组织架构。

「一张图说明:」

欧克,到这里,工厂模式结束了。

3.总结

由于想要在生产对象之前或者之后想要对对象进行一个定制处理,于是引入工厂设计模式,通过多态的思想,创建一个工厂类,里面提供了各个实现类的创建,在这些创建实现类的方法进行我们想要的操作,方法的返回值通过父类或者接口进行接收,这就是简单方法工厂。

随着系统的不断健壮,我们的产品的范围越来越广,于是引入了其他的工厂,此时需要一个统一的工厂来进行处理,于是引入抽象工厂的概念,接收所有的工厂实现类。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 石的三次方 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 为什么要用?
  • 2. 工厂设计模式
    • 2.1 简单方法工厂
      • 2.2 抽象工厂模式
      • 3.总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档