java设计模式之一(工厂模式)

何为工厂模式?

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

介绍

比如:一个用户想要吃番茄炒蛋,然后自己实现一套流程,做了一盘菜。这就是一个固定的方法。但是第二天呢又想要吃青椒炒肉,那可不可以到饭店呢,可以,只需要告诉饭店,需要吃什么就行,这就是工厂
而我们要做的就是把做不同菜的方法整合起来,继承于同一个抽象父类,在工厂中可以选择具体调用哪个子类,就是工厂模式

实现

首先有一个接口类和一些实现接口的实体类,然后定义一个工厂类将实现接口的实体类整合
在这里插入图片描述

实现

步骤1

/*** 定义一个接口*/
public interface Shape {void draw();
}

步骤2

/*** 定义方法*/
public class Circle implements Shape {@Overridepublic void draw() {System.out.println("Inside Circle::draw() method.");}
}
/*** 定义方法*/
public class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Inside Rectangle::draw() method.");}
}
/*** 定义方法*/
public class Square implements Shape {@Overridepublic void draw() {System.out.println("Inside Square::draw() method.");}
}

步骤3

/*** 建立一个工厂*/
public class ShapeFactory {//定义方法获取形状类型的对象public Shape getShape(String shapeType){if(StringUtil.isEmpty(shapeType)){return null;}if(shapeType.equalsIgnoreCase("CIRCLE")){return new Circle();}else if(shapeType.equalsIgnoreCase("RECTANGLE")){return new Rectangle();}else if(shapeType.equalsIgnoreCase("SQUARE")){return new Square();}return null;}
}

步骤5

/*** 使用该工厂*/
public class FactoryPatternDemo {public static void main(String[] args) {//实例化工厂ShapeFactory shapeFactory = new ShapeFactory();//获取Circle的对象,并调用它的draw方法Shape circle = shapeFactory.getShape("CIRCLE");circle.draw();//获取Rectangle的对象,并调用它的draw方法Shape Rectangle = shapeFactory.getShape("Rectangle");Rectangle.draw();//获取Square的对象,并调用它的draw方法Shape Square = shapeFactory.getShape("SQUARE");Square.draw();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28181.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 设计模式之迭代器模式

一、了解迭代器模式 1.1 什么是迭代器模式 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 迭代器模式把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也可以让责任各得其所。 …

【菜谱】青椒肉丝

【菜谱】青椒肉丝 食材配料步骤准备工作开始制作 成果展示 下周一上班,今天回家收拾东西。虽然是个程序员,但是也想炒一手好菜,就先在家里练习了,意外的发现还不错! 食材 猪里脊肉 175g (老妈就给我拿了这…

Java设计模式实现烹饪助手程序

Java设计模式实现烹饪助手程序 一. 程序设计目标和使用说明 1、程序设计目标 该程序在eclipse4.6.3版本中完成,用的是jdk1.7。     该程序的设计目的是为了学习java设计模式,应用其中的几个模式编写一个程序,在编写程序的过…

博士毕业,高校青椒还是30万年薪私企?

来源 | 知乎 网址 | https://www.zhihu.com/question/58594731 编辑 | 深度学习与计算机视觉 声明:仅做学术分享,侵删 年龄不占优势,高校稳定,企业收入高,如何选择? 作者:光子https://www.zhihu…

java设计模式-迭代器模式

java设计模式-迭代器模式 一、了解迭代器模式 1.1 什么是迭代器模式 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 迭代器模式把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也…

3D设计云桌面

青椒云3D设计桌面云方案,为使用GPU高负载应用的设计师们提供强大支持,如3D建模、光线追踪、渲染计算等领域,带来极致流畅的3D设计桌面体验,同时提升工作效率、可管理性和安全性。3D设计桌面云方案满足了工业客户在专业设计场景中的以下需求 1、强大的图形计算引擎保证专业…

设计模式-建造者模式

设计模式-建造者模式 传统模式类JDK8的Builder 别名:创建者模式 建造者模式针对复杂对象,分离它们的构建与表示,达到同样构建过程创建不同表示的目的。 建造者模式封装了复杂对象的构建过程,通过子类继承或者重载的方式&#xff0…

设计模式---工厂模式

工厂模式 具体的需求 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 披萨的种类很多(比如 GreekPizz、CheesePizz 等) 披萨的制作有 prepare、bake、cut、box 完成披萨店订购功能 public abstract class Pizza {protect…

浅谈设计模式

状态模式 核心思想就是用于解决一个物体在不同状态下复杂的逻辑行为,比如一个英雄有待机状态,行走状态,攻击状态,以后可能还会添加眩晕状态,冰冻状态一系列状态。 如果使用平常代码来写的话,就会使用分支语…

青椒开计算机课,不断学习 砥砺前行——揭开青椒成长的秘密

从上海到梧州,1700多公里;从2017年9月到今天,300多个日子。我们在互联网结缘,我们在互加遇见。于是,便开始了一路美丽的相伴,相伴在“互加”,相伴在“青椒”,相伴在“美丽乡村”………

了解计算机软件系统教学设计,认识计算机》教学设计

认识计算机》教学设计 作为一名教职工,就有可能用到教学设计,教学设计一般包括教学目标、教学重难点、教学方法、教学步骤与时间分配等环节。那么什么样的教学设计才是好的呢?以下是小编整理的认识计算机》教学设计,仅供参考&…

Java 设计模式——组合模式

概述 有时我们可能会被要求处理一个层级结构明显的对象,比如上下级的公司员工、比如层级嵌套的文件夹,还有丰富多彩的美食菜单。可是,我们可能要屡试不爽地编写深度搜索代码、要小心翼翼地编写递归逻辑。现在你可以忘掉这些,学习…

设计模式之模板方法模式

概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如&#…

matlab 滤波器设计工具,滤波器设计工具快速入门

滤波器设计工具快速入门 要打开滤波器设计工具,请键入 filterDesigner(在 MATLAB 命令提示符下键入。) 将打开滤波器设计工具并显示“设计滤波器”面板。 请注意,当您打开设计滤波器并未启用。您必须对默认滤波器设计进行更改以启用设计滤波器。每次您要更改滤波器设计时,均…

ChatGPT有用到知识图谱吗?| 文末送最新《知识图谱实战》书籍

文末留言点赞前五名送书,截止时间2023.4.2(本周日) 20:00 进NLP群—>加入NLP交流群(备注nips/emnlp/nlpcc进入对应投稿群) 从搜索引擎到个人助手,我们每天都在使用问答系统。问答系统必须能够访问相关的知识并进行推理。通常,知识可以隐式…

ChatGPT的诞生

这就是为什么ChatGPT 不可能在中国出现的原因 自欺欺人在家里玩可以,但是 你只是这世界的1/6而已,不可能 欺骗其他5/6的人类 最后还是自己傻比了

51 种 AI 工具,生活、编程、内容创建都应该使用它

AI 正在席卷全球 🔥🔥🔥 它具有无限的潜力,并将改变我们的生活,让生活变得更美好。这项技术将迅速改进,您今天可以使用许多工具来提高您的工作效率,帮助您完成工作,为您提供有关许多…

SpringBoot+Vue+Uniapp搭建的Java版本的ChatGPT智能Ai对话系统

chatgpt-java-system 介绍 SpringBootVueUniapp搭建的Java版本的ChatGPT智能Ai对话系统,小程序和H5包含智能Ai对话、精美Ai壁纸、知识付费商城、积分、会员、分享等公功能;后端管理包括系统管理、智能对话、基本设置、系统监控、代码生成、壁纸管理和商…

chatgpt赋能python:Python解决找零问题--极简演示

Python解决找零问题 – 极简演示 在日常生活中,我们经常需要进行找零计算。如果使用笔和纸来手动计算,则会浪费很多时间和精力。但是Python作为一种高级编程语言,可以轻松地解决这个问题,省去人工计算的烦恼。 什么是Python找零…

九龙证券|远离资本市场噪音的四种方法

我们都知道人是自我完成的群体,自我完成便是便是有方案有目的辅导自己的行为,目标或预期在很大程度上决定着人们的取得感,就好像以下公式所表现的相同:取得感所得/预期,那么股市中的预期是什么?怎么进行预期…