设计模式(1):工厂模式
在工厂模式中,我们没有创建逻辑暴露给客户端创建对象,并使用一个通用的接口引用新创建的对象。
1.创建Shape接口
public interface Shape {void draw(); }
2.创建多个Shape实现类(这里创建了3个)
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.");} }public class Circle implements Shape {@Overridepublic void draw() {System.out.println("Inside Circle::draw() method.");} }
3.创建工厂
public class ShapeFactory {//use getShape method to get object of type shape public Shape getShape(String shapeType){if(shapeType == null){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;} }
4.使用工厂通过传递类型等信息来获取具体类的对象
public class FactoryPatternDemo {public static void main(String[] args) {ShapeFactory shapeFactory = new ShapeFactory();//get an object of Circle and call its draw method.Shape shape1 = shapeFactory.getShape("CIRCLE");//call draw method of Circle shape1.draw();//get an object of Rectangle and call its draw method.Shape shape2 = shapeFactory.getShape("RECTANGLE");//call draw method of Rectangle shape2.draw();//get an object of Square and call its draw method.Shape shape3 = shapeFactory.getShape("SQUARE");//call draw method of circle shape3.draw();} }
5.输出结果如下:
Inside Circle::draw() method. Inside Rectangle::draw() method. Inside Square::draw() method.
转载于:https://www.cnblogs.com/zhch1212/p/10185384.html
设计模式(1):工厂模式相关推荐
- Java设计模式(工厂模式>抽象工厂模式和原型模式)
Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...
- JavaScript设计模式--简单工厂模式例子---XHR工厂
JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...
- 三角形圆形创建与擦除java_设计模式---------------简单工厂模式
设计模式---------------简单工厂模式 一.题目(Question) 使用简单工厂模式设计一个可以创建不同几何形状(如圆形.方形和三角形等)的绘图工具,每个几何图形都要有绘制draw()和 ...
- 策略模式和工厂模式的区别_设计模式之工厂模式-工厂方法模式
设计模式之工厂模式-工厂方法模式 大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目. 来源:凯哥Java(kaigejava) 需求: 披萨项目: 要方便披萨品种的扩展.要便于维护.要 ...
- Java 设计模式之工厂模式(二)
原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...
- 设计模式之工厂模式(三)
上一次我们已经通过代码,简单的认识了工厂方法模式,具体的思路请移步到设计模式之工厂模式(二),进行查看.这次,让我们通过设计模式的思想,来好好认识下工厂方法模式. 创建者和产品 所有工厂模式都用来封装 ...
- php工厂模式和单例模式,php 设计模式之工厂模式、单例模式、注册树模式
php 设计模式之工厂模式.单例模式.注册树模式 在软件工程中,创建型设计模式承担着对象创建的职责,尝试创建适合程序上下文的对象,对象创建设计模式的产生是由于软件工程设计的问题,具体说是向设计中增加复 ...
- 教你如何一篇博客读懂设计模式之—--工厂模式
一篇博客读懂设计模式之-工厂模式 工厂模式在我们日常开发的时候经常用到,相信大家都有了一定的了解,工厂模式是一种创建对象的设计模式,它提供一种创建对象的最佳方式. 主要过程是: 定义一个创建对象的接口 ...
- 一篇博客读懂设计模式之---工厂模式
设计模式之-工厂模式 工厂模式: 创建过程: 创建Shape接口 public interface Shape {void draw(); } 创建实现类: public class Circle i ...
- java 工厂模式详解_Java设计模式之工厂模式详解
简单工厂其实并不是设计模式,只是一种编程习惯. 首先我们创建父类Cup,所有杯子类的父类.再创建它的子类BigCup和SmallCup类. public abstract class Cup { pu ...
最新文章
- 虚拟机安装CentOS以及SecureCRT设置【完美无错版】
- JavaScript-数据引用类型对象
- ios 自己创建的动态frameworks 怎么发布_iPadOS/iOS 13.1 正式发布,这才是真正的 iOS 13 系统...
- mysql locate 和 like_MySQL比like语句更高效的写法locate position instr find_in_set
- Nexys4DDR的DDR2读写操作例程详解
- python 怎么算l2范数_数学推导+纯Python实现机器学习算法13:Lasso回归
- 在Windows Azure中使用自己的域名
- DOM(二)使用DOM
- spark官方文档_Spark机器学习之Pipeline
- 对华为HG255D路由器进行JTAG调试的进一步研究
- 西门子1200控制台达A2伺服458通讯控制博图V15.1
- CAD迷你看图常见使用问题与解答
- MATLAB函数freqz的使用
- win7蓝屏0x000000f4修复_Win 7电脑突发蓝屏现象,应如何解决或避免
- scikit-opt的使用
- 虚拟机(vmware)添加新硬盘
- RN8215芯片 32768Hz晶体停振案例分析
- Spring5:p命名和c命名空间注入
- 补齐AI人才短板!百度飞桨师资培训高校行走进天津大学
- springboot项目里面使用redis出现看不懂的\xac\xed\x00\x05t\x00\解决方法(规范使用)
热门文章
- php加入语音播报功能_一个有语音播报功能的网络聊天室PHP源码
- 服务器架构设计文档,架构设计文档
- L2-005 集合相似度(STL+暴力)
- AcWing 4242. 货币兑换(SPFA or Bellman 判正权环)
- 开放计算机应用基础形考3,国家开放大学《计算机应用基础》考试与答案形考任务模块3 模块3 Excel 2010 电子表格系统—客观题答案.doc...
- raw转bmp程序c语言,求指导,如何用c语言实现读取*.raw格式图像
- 微信php 客户端cookie,微信内置浏览器中的cookie很诡异呀
- ea 如何画bce备选架构图_GitHub - wongdean/rime-settings at 941ea079832ff211723bce1ce8e47344e527575e...
- MYsql隔离级别问题和解决方案,Spring的七大传播机制
- java笔记高级部分