您现在的位置是:亿华云 > 知识
秒懂简单工厂模式
亿华云2025-10-04 03:39:37【知识】2人已围观
简介来源:mikechen的互联网架构简单工厂模式(Factory Pattern) 是 Java 中最常用的设计模式之一 。简单工厂模式实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类责,适
来源:mikechen的秒懂模式互联网架构
简单工厂模式(Factory Pattern) 是 Java 中最常用的设计模式之一 。
简单工厂模式实现对象的简单创建和对象的使用分离,将对象的工厂创建交给专门的工厂类责,适用于工厂类责创建的秒懂模式对象比较少等场景中。
本文将采用图解、简单源码方式,工厂全面详解简单工厂模式。秒懂模式通过本文,简单我们可以了解并掌握以下知识:
简单工厂模式(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)