设计模式之简单工厂模式学习笔记

前言

简单工厂模式,又叫做静态工厂方法模式。属于创建型工厂模式,但是不属于23中设计模式。学习简单工厂模式,是为了更好地学习工厂方法模式。

定义

简单工厂模式,即静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类型的实例。

结构模型

在这里插入图片描述角色拆解分析:
Factory工厂类:简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类中创建产品类的方法可以被外部调用,创建所需的产品对象。
Product具体产品类:是创建目标
ProductX抽象产品类:创建的所有对象的父类,负责描述所有实例所共有的公共接口

简单实现

还是以笔记本电脑为例吧!

1.抽象产品类ProductX(父类)

public abstract class Computer{
    //产品的抽象方法
    public abstract void start();
}

2.具体产品类Product:

//美帝良心想
public class LenovoComputer extends Computer {
    @Override
    public void start() {
        System.out.print("美帝良心想启动了");
    }
}
//铁板熊掌普
public class HpComputer extends Computer {
    @Override
    public void start() {
        System.out.print("铁板熊掌普开机了...");
    }
}

3.工厂类Factory:

创建各种类型的笔记本电脑对象

public class ComputerFactory {

    public static Computer createComputer(String type){
        Computer computer=null;
        switch (type){
            case "lenovo":
                computer = new LenovoComputer();
                break;
            case "hp":
                computer = new HpComputer();
                break;
        }
        return computer;
    }
}

4.客户端调用工厂类

客户端直接调用工厂类的制造方法,并开机

public class UserClient {
    public static void main(String []args){
        //用户要求组装铁板熊掌普并开机
        ComputerFactory.createComputer("hp").start();
    }
}

优缺点

优点:用户直接输入参数即可得到对应的实例化对象,避免了直接实例化类,降低了耦合度
缺点:可实例化的类型在编译期间就确定了,增加新的类型意味着要修改工厂,违背了开放封闭原则。该模式需要提前知道所有要生成的类型,如果子类过多或者子类层次过多时不宜使用

使用场景

1.工厂类负责创建的对象比较少;
2.客户只需要知道传入工厂类的参数,不用关心创建对象的逻辑;

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值