Radio

一个小小程序员

0%

工厂模式

工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

示例演示:
  1. 我们定义一个生物接口,生物接口中有一个说话的功能。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    package test.factory;

    /**
    * 所有生物的标识
    */
    public interface Organism {
    //所有生物共有的一个功能,有自己的沟通方式
    void say();
    }
  2. 创建两个实体类,让其拥有Organism的属性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    package test.factory;

    public class People implements Organism {

    @Override
    public void say() {
    System.out.println("people say");
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package test.factory;

    public class Animal implements Organism {

    @Override
    public void say() {
    System.out.println("animal say");
    }
    }
  3. 创建产生对象的工厂

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    package test.factory;

    import org.apache.commons.lang3.StringUtils;

    public class OrganismFactory {

    public Organism getOrganism(String type) {
    if (StringUtils.isBlank(type)) {
    return null;
    }
    if (type.equalsIgnoreCase("people")) {
    return new People();
    } else if (type.equalsIgnoreCase("animal")) {
    return new Animal();
    }
    return null;
    }
    }
  4. 完成上述步骤,我们就可以开始演示了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package test.factory;

    public class FactoryDemo {
    public static void main(String[] args) {
    OrganismFactory organismFactory = new OrganismFactory();
    Organism o1 = organismFactory.getOrganism("people");
    o1.say();
    Organism o2 = organismFactory.getOrganism("animal");
    o2.say();
    }
    }

    运行结果:

    1
    2
    people say
    animal say
说明:

优点:1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。

缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。

欢迎关注我的其它发布渠道