简单工厂模式(附带UML图解和代码实现)

本文详细介绍了简单工厂模式的定义、UML结构图,并提供了Java代码实现。通过抽象产品和具体产品的概念,阐述了如何在工厂类中根据参数创建不同类型的对象。同时,分析了该模式的优缺点,如对象创建与使用的解耦,以及在扩展时可能面临的困难。简单工厂模式适用于对象创建数量较少且业务逻辑简单的场景。
摘要由CSDN通过智能技术生成

一、定义

定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

二、UML结构图

简单工厂图解

三、简单工厂模式实现

抽象产品: 将要批量生产的对象实体进行一个抽象提取,便于扩展更多实体

public abstract class Product{
    //所有产品类的公共业务方法
    public void methodSame(){
        //公共方法的实现
    }
    //声明抽象业务方法
    public abstract void methodDiff();
}

具体产品:继承抽象产品,将产品实例化:比如(披萨是抽象产品,实例化产品可以是各种口味的披萨,胡椒味,麻辣味等等)

public class ConcreteProduct extdents Product{
    //实现业务方法
    public void methodDiff(){
        //业务方法的实现
    }
}

工厂类:简单工厂的核心,根据用户传入不同参数来创建不同类型的产品对象。比如(传入胡椒味,创建胡椒味具体的实例对象),若要添加新的产品生产,只用添加一个实体类,在工厂类的静态工厂方法中添加一个else if 即可。

public class Factory{
    //静态工厂方法
    public static Product getProduct(String arg){
        Product product = null;
        if(arg.equalsIgnoreCase("A")){
            product =new ConcreteProductA();
            //初识化设置product
        }else if(arg.equalsIgnoreCase("B")){
             product =new ConcreteProductB();
            //初始化设置product
        }
        return product;
    }
}

具体客户端使用:传入不同参数,创建不同实体类

public class Client{
    public static void main(String args[]){
        Product product;
        product =Factory.getProduct("A");//通过工厂创建产品对象
        product.methodSame();
        product.methodDiff();
    }
}

四、简单工厂模式优缺点

优点:简单工厂实现了对象创建和使用的分离,客户端无需知道创建的具体类名,只需知道要传的参数即可得到对象。实现了解耦

缺点:使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构,扩展困难,一旦实体类多了,要扩张就会修改工厂的逻辑,不利于维护。适用于那种创建对象较少,业务逻辑简单的情况。

五、简单工厂模式适用环境

  1. 工厂类负责创建的对象比较少,由于创建的对象少,不会造成工厂方法中的业务逻辑太复杂。
  2. 客户端只知道传入工厂类的参数,对于如何创建对象并不关心。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值