在工厂模式中,我们没有创建逻辑暴露给客户端创建对象,并使用一个通用的接口引用新创建的对象。

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):工厂模式相关推荐

  1. Java设计模式(工厂模式>抽象工厂模式和原型模式)

    Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...

  2. JavaScript设计模式--简单工厂模式例子---XHR工厂

    JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...

  3. 三角形圆形创建与擦除java_设计模式---------------简单工厂模式

    设计模式---------------简单工厂模式 一.题目(Question) 使用简单工厂模式设计一个可以创建不同几何形状(如圆形.方形和三角形等)的绘图工具,每个几何图形都要有绘制draw()和 ...

  4. 策略模式和工厂模式的区别_设计模式之工厂模式-工厂方法模式

    设计模式之工厂模式-工厂方法模式 大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目. 来源:凯哥Java(kaigejava) 需求: 披萨项目: 要方便披萨品种的扩展.要便于维护.要 ...

  5. Java 设计模式之工厂模式(二)

    原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...

  6. 设计模式之工厂模式(三)

    上一次我们已经通过代码,简单的认识了工厂方法模式,具体的思路请移步到设计模式之工厂模式(二),进行查看.这次,让我们通过设计模式的思想,来好好认识下工厂方法模式. 创建者和产品 所有工厂模式都用来封装 ...

  7. php工厂模式和单例模式,php 设计模式之工厂模式、单例模式、注册树模式

    php 设计模式之工厂模式.单例模式.注册树模式 在软件工程中,创建型设计模式承担着对象创建的职责,尝试创建适合程序上下文的对象,对象创建设计模式的产生是由于软件工程设计的问题,具体说是向设计中增加复 ...

  8. 教你如何一篇博客读懂设计模式之—--工厂模式

    一篇博客读懂设计模式之-工厂模式 工厂模式在我们日常开发的时候经常用到,相信大家都有了一定的了解,工厂模式是一种创建对象的设计模式,它提供一种创建对象的最佳方式. 主要过程是: 定义一个创建对象的接口 ...

  9. 一篇博客读懂设计模式之---工厂模式

    设计模式之-工厂模式 工厂模式: 创建过程: 创建Shape接口 public interface Shape {void draw(); } 创建实现类: public class Circle i ...

  10. java 工厂模式详解_Java设计模式之工厂模式详解

    简单工厂其实并不是设计模式,只是一种编程习惯. 首先我们创建父类Cup,所有杯子类的父类.再创建它的子类BigCup和SmallCup类. public abstract class Cup { pu ...

最新文章

  1. 虚拟机安装CentOS以及SecureCRT设置【完美无错版】
  2. JavaScript-数据引用类型对象
  3. ios 自己创建的动态frameworks 怎么发布_iPadOS/iOS 13.1 正式发布,这才是真正的 iOS 13 系统...
  4. mysql locate 和 like_MySQL比like语句更高效的写法locate position instr find_in_set
  5. Nexys4DDR的DDR2读写操作例程详解
  6. python 怎么算l2范数_数学推导+纯Python实现机器学习算法13:Lasso回归
  7. 在Windows Azure中使用自己的域名
  8. DOM(二)使用DOM
  9. spark官方文档_Spark机器学习之Pipeline
  10. 对华为HG255D路由器进行JTAG调试的进一步研究
  11. 西门子1200控制台达A2伺服458通讯控制博图V15.1
  12. CAD迷你看图常见使用问题与解答
  13. MATLAB函数freqz的使用
  14. win7蓝屏0x000000f4修复_Win 7电脑突发蓝屏现象,应如何解决或避免
  15. scikit-opt的使用
  16. 虚拟机(vmware)添加新硬盘
  17. RN8215芯片 32768Hz晶体停振案例分析
  18. Spring5:p命名和c命名空间注入
  19. 补齐AI人才短板!百度飞桨师资培训高校行走进天津大学
  20. springboot项目里面使用redis出现看不懂的\xac\xed\x00\x05t\x00\解决方法(规范使用)

热门文章

  1. php加入语音播报功能_一个有语音播报功能的网络聊天室PHP源码
  2. 服务器架构设计文档,架构设计文档
  3. L2-005 集合相似度(STL+暴力)
  4. AcWing 4242. 货币兑换(SPFA or Bellman 判正权环)
  5. 开放计算机应用基础形考3,国家开放大学《计算机应用基础》考试与答案形考任务模块3 模块3 Excel 2010 电子表格系统—客观题答案.doc...
  6. raw转bmp程序c语言,求指导,如何用c语言实现读取*.raw格式图像
  7. 微信php 客户端cookie,微信内置浏览器中的cookie很诡异呀
  8. ea 如何画bce备选架构图_GitHub - wongdean/rime-settings at 941ea079832ff211723bce1ce8e47344e527575e...
  9. MYsql隔离级别问题和解决方案,Spring的七大传播机制
  10. java笔记高级部分