美文网首页
设计模式(2)-- 工厂模式

设计模式(2)-- 工厂模式

作者: MikeShine | 来源:发表于2022-02-24 19:49 被阅读0次

    1. 写在前面

    我们首先看一下创建型结构模式。
    首先学习一下工厂模式


    2. 是什么

    工厂模式(Factory Method)是一种创建型的结构模式,专门用来创建对象。
    当我们明确的有在不同的场景下,创建不同的对象的需求时候,就需要 工厂模式 了。
    其大概的结构如下:

    工厂模式
    整体上来说,分为4个部分:
    • 工厂接口:创建对象(产品)的接口
    • 工厂(实现) 类:实现工厂接口,创建具体的产品
    • 产品接口:定义产品的功能
    • 产品实现类:实现产品的功能

    举一个例子,我们买车的时候,根本不关心这个车是怎么生产出来的。只关心在不同的场景下,想要什么车。
    这也就是工厂模式中,用户只要完成对象的实例化,并不关心具体的创建 和 对象的功能实现是如何。

    3. 怎么用

    我们看一个豪车生产的例子:

    // 产品接口
    public Interface Car{
          public void drive();
    }
    
    // 产品实现
    public class Bmw implements Car{
        @Override
        public void drive(){  sout("Driving a Bmw.")}
    }
    
    public class Benz implements Car{
        @Override
        public void drive(){  sout("Driving a Benz.")}
    }
    
    public class Audi implements Car{
        @Override
        public void drive(){  sout("Driving an Audi.")}
    }
    
    // 工厂接口
    public Interface Factory{
        public Car create();    // 产品接口就是让工厂接口用的,不然没办法实现“不同场景下生产不同产品”
    }
    
    // 工厂实现类
    public class BmwFactory implements Factory{
          @Override
          public Car create(){  return new Bmw(); }
    }
    
    public class BenzFactory implements Factory{
          @Override
          public Car create(){  return new Benz(); }
    }
    
    public class AudiFactory implements Factory{
          @Override
          public Car create(){  return new Audi(); }
    }
    

    这里,我们就实现了,在不同的场景下,直接用不同的工厂实现类,来实例化不同的对象。

    4. 为什么

    从上面的例子来看,我们在使用Car的时候,只需要直接根据使用需求,去调用对应的工厂类来实例化不同的 Car 就行。

    这样做的好处如下:

    • 用户不用关注对象的实现,直接实例化就行
    • 如果增加了不同的类型,直接增加对应的工厂类即可,松耦合,不会影响已有的代码

    不好的地方无非就是:

    • 需要一些设计,理解上有一些成本

    5. 总结

    工厂模式总的来说,就是

    定义一个创建对象的接口(工厂接口),在工厂实现类(子类)中决定实例化哪一个产品类。
    Factory Method使一个类的实例化延迟到其子类。

    相关文章

      网友评论

          本文标题:设计模式(2)-- 工厂模式

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