1.0 工厂模式-简单工厂
简介
工厂模式(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 工厂模式-简单工厂相关推荐
- JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂——区分“变与不变”
JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂--区分"变与不变" 先来说说构造器 在介绍工厂模式之前,为了辅助大家的理解,我想先在这儿给大家介绍 ...
- 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)
园子里关于23种设计模式的博文已经可以说是成千上万.车载斗量.屯街塞巷.不计其数.数不胜数.摩肩接踵.汗牛充栋.车水马龙.门庭若市.琳琅满目直至让人眼花缭乱了.在这样的大环境下之所以来写设计模式类的博 ...
- 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录
1楼留头头大神:http://www.cnblogs.com/toutou/p/4899388.html v阅读目录 v写在前面 v简单工厂模式 v工厂方法模式 v抽象工厂模式 v博客总结 v博客前言 ...
- java 三种工厂模式(简单工厂+工厂方法+抽象工厂)
一.简单工厂模式 概述 简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因 ...
- 创建型模式:工厂模式(简单工厂+工厂方法+抽象工厂)
一.引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰).Bmw(宝马).Audi(奥迪)),还雇了司机为他开车.不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!& ...
- 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
工厂模式,也叫做说虚构造器,在简单工厂中间插入了一个具体产品工厂,这个工厂知道产品构造时候的具体细节,而简单工厂模式的产品具体构造细节是在一个个if/else分支,或者在switch/case分支里面 ...
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
最新文章
- 合川专升本计算机怎么学升学率,2019年重庆市合川太和中学高考喜报
- Filter高级开发
- springCloud分布式事务实战(三)分布式事务处理器的编译和运行之注册中心编写与测试...
- Oracle查询所有序列
- mysql慢查询日志分析工具比较_MySQL慢查询日志总结 日志分析工具mysqldumpslow
- 电脑安装python后开不了机_Python学习第145课——关于无法正常启动centOS问题的解决方案...
- Android Mac下反编译apk
- 使用PowerShell读取文件数据
- python的if判断语句_Python之if条件判断语句
- 【吾爱破解第二期】操作学习笔记
- Python打印九九乘法表
- linux安装sas raid驱动,windows 2008 安装raid驱动|windows 2008安装sas硬盘驱动
- C++入门经典(第三版 Ivor Horton著)第二章习题答案
- Android加速度传感器原理
- STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)
- Html a标签的用法
- 复辟变后寄友人——李大钊
- 遗传算法入门(连载1-10)
- Gamit Gloness 数据处理 流程
- 华为机考108题(c++)(52-61)
热门文章
- etal斜体吗 参考文献_[转]Endnote生成的中英文混排参考文献中等与et al的处理 | 晨阳博客...
- iphone获取imei_如何为您的iPhone或iPad查找序列号或IMEI
- iphone x php兼容吗,为什么我不建议你现在买苹果xs?看看iphoneX就知道了
- 伯虎点秋香-rqnoj-144
- 根据宝宝出生时辰看五行
- WebView与ListView滑动冲突——(一)事件基础篇
- 华为P10使用技巧,超实用!
- HTML5微信支付和微信公众号内微信支付(VUE)
- 二代征信报告上线,有哪些变化?
- netsh配置网络失败