设计模式-创建型模式-简单工厂模式详解

news/2024/12/25 22:19:53/

简单工厂模式

简介

单工厂模式 : Simple Factory Pattern
是一种创建型设计模式
通过一个工厂类,封装了对象的创建逻辑。
客户端使用时不需要通过 new 的方式进行对象的创建,而是直接调用工厂类中的方法获取对象

应用场景

场景介绍

1、有一个 手机的抽象类,声明了 手机的基本属性 和 功能方法;
2、不同品牌的手机,继承了 该抽象类;
3、有一个手机工厂,可以根据不同的参数,创建对应品牌的手机,并返回。

类图

在这里插入图片描述

案例代码

案例代码,就是按照 UML 类图进行实现的代码。

抽象类Phone

public abstract class Phone {protected String brandName; // 品牌名protected abstract void call(); // 抽象方法public String getBrandName() {return brandName;}public void setBrandName(String brandName) {this.brandName = brandName;}
}

实现类PhoneXiaoMi

public class PhoneXiaoMi extends Phone{@Overrideprotected void call() {System.out.println(brandName + " : 正在打电话。。。");}
}

实现类PhoneHuaWei

public class PhoneHuaWei extends Phone{@Overrideprotected void call() {System.out.println(brandName + " 华为手机正在打电话......");}
}

工厂类 PhoneFactory

public class PhoneFactory {public static Phone createPhone(String brand) {Phone phone = null;if ("XiaoMi".equals(brand)){phone = new PhoneXiaoMi();phone.setBrandName("小米14");}else if ("HuaWei".equals(brand)){phone = new PhoneHuaWei();phone.setBrandName("华为mate50");}return phone;}
}

测试类

通过工厂类中的方法,获取不同的对象。

public class FactoryTest {public static void main(String[] args) {// 通过手机工厂获取一个 华为的手机Phone phone = PhoneFactory.createPhone("HuaWei");phone.call();System.out.println(" =========== ");// 通过手机工厂获取一个 小米的手机Phone xiaoMi = PhoneFactory.createPhone("XiaoMi");xiaoMi.call();}
}
运行结果如下 :华为mate50 华为手机正在打电话......=========== 
小米14 : 正在打电话。。。

http://www.ppmy.cn/news/1558096.html

相关文章

怎样配备公共配套设施,才能让啤酒酿造流程高效环保?

今天,天泰邀请大家和我一起走进啤酒厂,了解水、蒸汽、压缩空气和二氧化碳这些基础设施如何助力啤酒生产,实现高效与环保的完美结合。 水 水是啤酒酿造的基础,啤酒厂对水质的要求极高。为了确保水质达标,啤酒厂设有专…

2、C#基于.net framework的应用开发实战编程 - 设计(二、二) - 编程手把手系列文章...

二、设计; 二.二、设计用户界面; 这个编程例子主要用的Visual Studio 2022开发的,所以此文记录VS 2022的UI界面设计过程。 1、 窗体; 1) 此例子的窗体主要是便签窗体; 主要是便签的内容保存。还有一个标题…

【JavaEE进阶】@RequestMapping注解

目录 📕前言 🌴项目准备 🌲建立连接 🚩RequestMapping注解 🚩RequestMapping 注解介绍 🎄RequestMapping是GET还是POST请求? 🚩通过Fiddler查看 🚩Postman查看 …

如何详细地遵循RustDesk的步骤来搭建远程访问和自定义服务器?

要详细地遵循RustDesk的步骤来搭建远程访问和自定义服务器,你可以按照以下几个主要步骤进行操作: 下载并安装RustDesk:前往RustDesk的官方网站(https://rustdesk.com/)下载适用于你的操作系统的安装程序。然后&#xf…

Linux 系统新磁盘分区挂载

在Linux系统中,新磁盘分区挂载是一个常见的任务。以下是详细的步骤和样例: 一、查看磁盘信息 首先,使用lsblk或fdisk -l命令查看系统中的磁盘及其分区情况。 lsblk # 或 sudo fdisk -l二、分区操作 进入分区工具 使用fdisk或parted工具进…

8086汇编(16位汇编)学习笔记03.汇编指令

8086汇编(16位汇编)学习笔记03.汇编指令-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 指令种类 数据传送指令算数运算类指令位操作类指令串操作类指令控制转移类指令处理器控制类指令 数据传送类指令 **传送类指令不影响标志位,**除了标志位传…

JavaScript相关this指向面试题

这篇文章用来整理this指向相关面试题,我们请看内容 ##面试题一 var name "window";var person {name: "person",sayName: function () {console.log(this.name);} };function sayName() {var sss person.sayName;sss(); // 绑定: 默认绑定…

MQTT入门:在Spring Boot中建立连接及测试

文章目录 项目配置编写MQTT测试类代码解析 验证连接状态运行测试总结 在物联网(IoT)应用中,消息队列遥测传输(MQTT)作为一种轻量级的消息协议,因其低带宽需求和高效传输特点,广泛应用于设备通信…