您现在的位置是:亿华云 > 知识

秒懂简单工厂模式

亿华云2025-10-04 03:39:37【知识】2人已围观

简介来源:mikechen的互联网架构简单工厂模式(Factory Pattern) 是 Java 中最常用的设计模式之一 。简单工厂模式实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类责,适

来源:mikechen的秒懂模式互联网架构

简单工厂模式(Factory Pattern) 是 Java 中最常用的设计模式之一 。

简单工厂模式实现对象的简单创建和对象的使用分离,将对象的工厂创建交给专门的工厂类责,适用于工厂类责创建的秒懂模式对象比较少等场景中。

本文将采用图解、简单源码方式,工厂全面详解简单工厂模式。秒懂模式通过本文,简单我们可以了解并掌握以下知识:

01简单工作模式的定义

简单工厂模式(Simple Factory),又被称为静态工厂方法模式,秒懂模式属于创建型设计模式,简单是工厂由一个工厂对象决定创建出哪一种产品类的实例。

02简单工作模式的秒懂模式结构

简单工厂模式的 3 个重要构成分别是工厂类抽象产品、简单具体产品。工厂

工厂类:负责实现创建所有实例的内部逻辑。

抽象产品:所创建的所有对象的父类,亿华云负责描述所有实例所共有的公共接口。

具体产品:创建目标,所有创建的对象都充当这个角色的某个具体类的实例。

03简单工作模式的实现

下面,我们通过一个场景例子、并提供相应的源码,来帮助理解剖析简单模式的具体实现。

假设:

某手机生产厂商,原来为小米代工生产手机 。

随着业务的拓展,这个手机生产厂商还要生产华为手机、苹果手机。

此时,就需要使用一个单独的类来专门生产手机,这里就会用到简单工厂方式。

mikechen的互联网架构

我们来看下,用简单工厂模式是怎样实现的。

1) 创建抽象产品类,定义具体产品的公共接口。

首先,高防服务器我们创建一个手机的抽象产品类,通过抽象方法来启动手机。

package com.mikechen.java.design.factory.simple;public abstract class Phone {    /**     * 产品的抽象方法,由具体的产品类去实现     */    public abstract void start();} 

2)创建具体产品类,继承抽象产品类,定义生产的具体产品。

接着,我们创建各个品牌的手机,它们都继承了其父类 Phone ,并实现了父类的 start 方法:

小米手机:

package com.mikechen.java.design.factory.simple;public class XiaomiPhone extends Phone{    @Override    public void start() {        System.out.println("小米手机启动");    }

华为手机:

package com.mikechen.java.design.factory.simple;public class HuaWei Phone extends Phone{    @Override    public void start() {        System.out.println("华为手机启动");    }

苹果手机:

package com.mikechen.java.design.factory.simple;public class IPhone extends Phone{    @Override    public void start() {        System.out.println("苹果手机启动");    }

3)创建工厂类,通过创建静态方法,根据传入不同参数、创建不同具体产品类的实例。

工厂类提供了一个静态方法 createPhone 用来生产手机。

只需要传入工厂想要生产的手机品牌,就会实例化相应品牌的手机对象:

package com.mikechen.java.design.factory.simple;public class PhoneFactory {    public static Phone createPhone(String type){        Phone mPhone=null;        switch (type) {            case "HuaWei":                mPhone=new HuaWeiPhone();               break;            case "xiaomi":                mPhone=new xiaomiPhone();                break;        }        return mPhone;    }}

客户端调用工厂类,传入“HuaWei”生产出华为手机,并调用该手机对象的 start 方法:

package com.mikechen.java.design.factory.simple;public class CreatPhone {    public static void main(String[]args){      PhoneFactory.createPhone ("HuaWei").start();    }}

这里我做了简化,真实环境中,可以根据传入的具体产品参数,来实现具体的产品。服务器托管

04简单工作模式的优缺点

简单工厂模式的优点:

将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,实现了解耦;

把初始化实例时的工作放到工厂里进行,使代码更容易维护。

简单工厂模式的缺点:

工厂类集中了所有实例(产品) 的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响;

违背“开放-关闭原则”,一旦添加新产品,就需要修改工厂类的逻辑,将导致工厂逻辑过于复杂;

简单工厂模式由于使用了静态工厂方法,静态方法不能被继承和重写,会造成工厂角色无法形成基于继承的等级结构。

05简单工作模式的应用场景

客户如果只知道传入工厂类的参数,对于如何创建对象的逻辑不关心时;

客户端既不需要关心创建细节,甚至连类名都不需要记住,只需要知道类型所对应的参数;

当工厂类负责创建的对象具体产品比较少时,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。

总结

通过本文,我们了解并掌握了简单工厂模式。

简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责。缺点是工厂类不够灵活,增加新的具体产品时,需要修改工厂类的判断逻辑代码,当产品越来越多,工厂方法的代码就会非常复杂。

很赞哦!(69473)