栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式 - 简单工厂模式 - 基于 Java 实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式 - 简单工厂模式 - 基于 Java 实现

工厂模式的分类

在工厂模式中,有三种类型:简单工厂模式,工厂方法模式,抽象工厂模式;
本文主要是对简单工厂模式进行简单的介绍以及总结;

简单工厂模式 定义

定义一个工厂类,根据传递参数的不同从而返回不同的实例,被创建的对象实例之间有着共同的父类或者拥有共同实现的接口。

适用场景

1、需要创建的对象比较少
2、客户端不需要创建对象的过程

上面的使用场景这样子设定是因为,创建的对象太多,使得工厂的逻辑变得非常的复杂,这是不可取的,由于工厂类封装了对象的创建过程,所以客户端不需要关系对象是怎么创建出来的。

代码实例简单工厂模式

思考这样的场景,常见的动物都是拥有行走能力的,可以将行走的这个能力进行抽象,抽象到接口中,因为接口是比抽象类更高一级的抽象,习惯上使用接口进行抽象,并且接口是支持多继承的,在日后中也方便进行功能的增加。

对象就是类的实例,对象和实例两者是同一种东西不同的表述;

举一个实际开发当中的例子,使用简单工厂模式创建不同动物类对象:
老虎会行走,狮子会行走,大象也会行走,将这三种动物的行走能力抽象到接口中;

定义动物接口,里面定义一个公开的 run() 方法:

public interface Animal {
    void run();
}

老虎实现行走功能:

public class Tiger implements Animal{
    @Override
    public void run() {
        System.out.println("老虎在行走...");
    }
}

狮子实现行走功能:

public class Lion implements Animal{
    @Override
    public void run() {
        System.out.println("狮子在行走...");
    }
}

大象实现行走功能:

public class Elephant implements Animal{
    @Override
    public void run() {
        System.out.println("大象在行走...");
    }
}

实现创建动物的工厂类,该工厂类在传递了不同的参数之后,创建出来了不同的动物:

public class AnimalFactory {
    public static final String TAG = "AnimalFactory";

    public static Animal getAnimal(String type) {
        // 这里的比较避免了空指针异常以及比较字符串是忽略大小写的
        if ("Tiger".equalsIgnoreCase(type)) {
            return new Tiger();
        } else if ("Lion".equalsIgnoreCase(type)) {
            return new Lion();
        } else if ("Elephant".equalsIgnoreCase(type)) {
            return new Elephant();
        } else {
            try {
                System.out.println("该动物无法被该动物工厂创建出来");
                throw new IllegalAccessException();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}

在上面的 AnimalFactory 工厂类中,传入了不同的动物类型之后,就会创建出来具体的对象;

创建测试代码创建老虎:

// 老虎在行走
Animal tiger = AnimalFactory.getAnimal("Tiger");
tiger.run();

创建测试代码创建狮子:

// 狮子在行走
Animal lion = AnimalFactory.getAnimal("Lion");
lion.run();

创建测试代码创建大象:

// 大象在行走
Animal elephant = AnimalFactory.getAnimal("Elephant");
elephant.run();
整个简单工厂模式中需要的类以及接口总结

1、需要一个抽象类或者接口,里面存在多个类都需要实现的某个功能,比如上面例子中的 Animal 接口

2、不同的对于抽象类或者接口的实现类,比如上面例子中的 Tiger,Lion,Elepgant 类

3、制造对象的简单工厂类,以免根据需要使用到的对象,将相关的对象创建出来,比如上面的 AnimalFactory 类

4、测试类,测试是不是可以使用工厂类成功的创建出来需要使用的对象

简单工厂模式的优点和缺点

优点:
将对象的创建交给了专门的工厂(工厂类),实现了对象的创建以及使用的分离;

缺点:
工厂类的代码是不够灵活的,因为增加了产品类的时候,工厂类的内部结构是需要修改的;

小结

本文首先介绍了工厂模式的常见分类,并且使用动物行走的例子实现了一个简单工厂模式,在日常的开发工作中,开发人员可以更具业务类型,将相关的类进行抽象成接口,使得不同的子类实现接口,通过创建工厂,来实现不同的对象的创建;但是同时需要注意简单工厂模式的优点以及缺点;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/859905.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号