简介

工厂模式(Factory Pattern)是 Java中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。将创建对象的过程延迟到子类,分为简单工厂,工厂方法,抽象工厂三种模式。

简单工厂构成:抽象产品接口,具体产品类,工厂类

简单工厂类图

代码

/**  * 简单工厂-抽象产品* @author: 张彬* @date: 2018年3月22日 下午2:44:27* @version: V1.0* @review: 张彬/2018年3月22日 下午2:44:27*/
public interface Shape {public void draw();
}
/*** 简单工厂-具体产品* @author: 张彬* @date: 2018年3月22日 下午3:07:48* @version: V1.0* @review: 张彬/2018年3月22日 下午3:07:48*/
public class Circle implements Shape
{@Overridepublic void draw(){System.out.println("in Circle::draw() method.");}
}
/*** 简单工厂-具体产品* @author: 张彬* @date: 2018年3月22日 下午2:46:10* @version: V1.0* @review: 张彬/2018年3月22日 下午2:46:10*/
public class Rectangle implements Shape
{@Overridepublic void draw(){System.out.println("in Rectangle::draw() method.");}
}
/*** 简单工厂-具体产品* @author: 张彬* @date: 2018年3月22日 下午2:47:46* @version: V1.0* @review: 张彬/2018年3月22日 下午2:47:46*/
public class Square implements Shape
{@Overridepublic void draw(){System.out.println("in Square::draw() method.");}
}
/**  * 简单工厂-工厂* @author: 张彬* @date: 2018年3月22日 下午2:48:22* @version: V1.0* @review: 张彬/2018年3月22日 下午2:48:22*/
public class ShapeFactory {public Shape getShape(String shapeType){switch (shapeType){case ShapeType.RECTANGLE:return new Rectangle();case ShapeType.SQUARE:return new Square();default:return null;}}}
/**  * 常量* @author: 张彬* @date: 2018年3月22日 下午2:50:03* @version: V1.0* @review: 张彬/2018年3月22日 下午2:50:03*/
public class ShapeType{public static final String RECTANGLE = "RECTANGLE";public static final String SQUARE = "SQUARE";
}
/**  * 简单工厂-测试* @author: 张彬* @date: 2018年3月22日 下午3:04:34* @version: V1.0* @review: 张彬/2018年3月22日 下午3:04:34*/
public class SimpleFactoryDemo {public static void main(String[] args) {ShapeFactory shapeFactory = new ShapeFactory();//获取 Rectangle 的对象,并调用它的 draw 方法Shape shape2 = shapeFactory.getShape(ShapeType.RECTANGLE);//调用 Rectangle 的 draw 方法shape2.draw();//获取 Square 的对象,并调用它的 draw 方法Shape shape3 = shapeFactory.getShape(ShapeType.SQUARE);//调用 Square 的 draw 方法shape3.draw();}}

输出结果:

in Rectangle::draw() method.
in Square::draw() method.

1.0 工厂模式-简单工厂相关推荐

  1. JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂——区分“变与不变”

    JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂--区分"变与不变" 先来说说构造器 在介绍工厂模式之前,为了辅助大家的理解,我想先在这儿给大家介绍 ...

  2. 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)

    园子里关于23种设计模式的博文已经可以说是成千上万.车载斗量.屯街塞巷.不计其数.数不胜数.摩肩接踵.汗牛充栋.车水马龙.门庭若市.琳琅满目直至让人眼花缭乱了.在这样的大环境下之所以来写设计模式类的博 ...

  3. 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录

    1楼留头头大神:http://www.cnblogs.com/toutou/p/4899388.html v阅读目录 v写在前面 v简单工厂模式 v工厂方法模式 v抽象工厂模式 v博客总结 v博客前言 ...

  4. java 三种工厂模式(简单工厂+工厂方法+抽象工厂)

    一.简单工厂模式 概述   简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因 ...

  5. 创建型模式:工厂模式(简单工厂+工厂方法+抽象工厂)

    一.引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰).Bmw(宝马).Audi(奥迪)),还雇了司机为他开车.不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!& ...

  6. 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别

    工厂模式,也叫做说虚构造器,在简单工厂中间插入了一个具体产品工厂,这个工厂知道产品构造时候的具体细节,而简单工厂模式的产品具体构造细节是在一个个if/else分支,或者在switch/case分支里面 ...

  7. JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  8. 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  9. java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

最新文章

  1. 合川专升本计算机怎么学升学率,2019年重庆市合川太和中学高考喜报
  2. Filter高级开发
  3. springCloud分布式事务实战(三)分布式事务处理器的编译和运行之注册中心编写与测试...
  4. Oracle查询所有序列
  5. mysql慢查询日志分析工具比较_MySQL慢查询日志总结 日志分析工具mysqldumpslow
  6. 电脑安装python后开不了机_Python学习第145课——关于无法正常启动centOS问题的解决方案...
  7. Android Mac下反编译apk
  8. 使用PowerShell读取文件数据
  9. python的if判断语句_Python之if条件判断语句
  10. 【吾爱破解第二期】操作学习笔记
  11. Python打印九九乘法表
  12. linux安装sas raid驱动,windows 2008 安装raid驱动|windows 2008安装sas硬盘驱动
  13. C++入门经典(第三版 Ivor Horton著)第二章习题答案
  14. Android加速度传感器原理
  15. STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)
  16. Html a标签的用法
  17. 复辟变后寄友人——李大钊
  18. 遗传算法入门(连载1-10)
  19. Gamit Gloness 数据处理 流程
  20. 华为机考108题(c++)(52-61)

热门文章

  1. etal斜体吗 参考文献_[转]Endnote生成的中英文混排参考文献中等与et al的处理 | 晨阳博客...
  2. iphone获取imei_如何为您的iPhone或iPad查找序列号或IMEI
  3. iphone x php兼容吗,为什么我不建议你现在买苹果xs?看看iphoneX就知道了
  4. 伯虎点秋香-rqnoj-144
  5. 根据宝宝出生时辰看五行
  6. WebView与ListView滑动冲突——(一)事件基础篇
  7. 华为P10使用技巧,超实用!
  8. HTML5微信支付和微信公众号内微信支付(VUE)
  9. 二代征信报告上线,有哪些变化?
  10. netsh配置网络失败