JAVA设计模式是个什么玩意儿_01_工厂方法模式
1. 前言
工厂方法模式(Factory Method)
该模式属于创建型设计模式。
2. 定义
摘自《研磨设计模式》 陈臣、王斌
3.代码举例
public interface BMW {public void run();
}public class BMWX3 implements BMW {public void run() {System.out.println("宝马x3在路上奔跑……");}
}public class BMWX5 implements BMW {public void run() {System.out.println("宝马x5在路上奔跑……");}
}public interface BMWFactory {public BMW createBMW();
}public class BMWX3Factory implements BMWFactory {public BMW createBMW() {return new BMWX3();}
}public class BMWX5Factory implements BMWFactory {public BMW createBMW() {return new BMWX5();}
}public class Client {public static void main(String[] args) {BMWFactory bmwx3Factory = new BMWX3Factory();BMW bmwx3 = bmwx3Factory.createBMW();bmwx3.run();BMWFactory bmx5Factory = new BMWX5Factory();BMW bmwx5 = bmx5Factory.createBMW();bmwx5.run();}
}输出结果:
宝马x3在路上奔跑……
宝马x5在路上奔跑……
4. 缺点
工厂方法模式仿佛已经很完美地对对象的创建进行了包装,使得客户程序中仅仅处理抽象产品角色提供的接口,但使得对象的数量成倍增长。当产品种类非常多时,会出现大量的与之对应的工厂对象,这不是很好,于是就有了抽象工厂模式。
欲知抽象工厂模式如何?且听下回分解。
JAVA设计模式是个什么玩意儿_01_工厂方法模式相关推荐
- JAVA设计模式是个什么玩意儿_00_工厂模式家族准备篇_简单工厂模式
1. 前言 又叫静态工厂方法(Static Factory Method)模式. 它并不是GoF那23种设计模式之一. 简单工厂模式是工厂模式家族中最简单实用的模式. 虽然很简单,但它是学习工厂方法模 ...
- java/android 设计模式学习笔记(3)---工厂方法模式
这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或 ...
- [Python设计模式] 第8章 学习雷锋好榜样——工厂方法模式
github地址:https://github.com/cheesezh/python_design_patterns 简单工厂模式 v.s. 工厂方法模式 以简单计算器为例,对比一下简单工厂模式和工 ...
- 设计模式系列漫谈之二 - 工厂方法模式
故事 10月1日是小雪的生日.许多追求者都想在生日那天给小雪一份意想不到的惊喜,并且表达自己的爱意.这些追求者绞尽脑汁的为小雪发送一个比较有创意的祝福短信.看来,小雪今年的生日过得肯定非常 ...
- 设计模式来一发(三)工厂方法模式
1.定义 为某个对象提供一个接口,而且无需指定它们的具体类. 工厂方法模式,是简单工厂模式的延伸(https://blog.csdn.net/ss1300460973/article/details/ ...
- 大话设计模式读书 笔记(六) 工厂方法模式
工厂方法模式(Factory Method) 书中通过一个学雷锋的例子,来引出工厂方法模式. 工厂方法模式:定义了一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类 ...
- 精通Java设计模式从初见到相爱之工厂+策略模式(3)
为什么80%的码农都做不了架构师?>>> 1.公司项目需求. 用户签到活动,会员签到怎么处理,超级会员怎么处理,普通用户签到怎么处理,针对不同的档次,有不同的方案,所以在项目中 ...
- 设计模式之(Factory method)工厂方法模式
1.需求 开发一个测试工具专门用于测试手机,测试流程打开分为以下几步:测试开机速度->测试屏幕亮度->测试相机效果.手机有很多种品牌:三星.小米.魅族等等. 2. 分析 不同的手机的测试流 ...
- 设计模式之工厂方法模式---factory method
模式的介绍 模式的定义 Define an interface for creating an object,but let subclassed decide which class to inst ...
最新文章
- 分页功能 (包含增删改查)工具类
- 往年包场丘赛的北大,今年被清华逆袭了
- 反反复复的磁盘丢失故障处理过程
- PTA 寻宝路线 (40 point(s))
- H5禁止手机自带键盘弹出
- 计算机辅助设计源程序,计算机辅助设计(插值法程序).doc
- Android 网络评分机制
- 视频方向的变换by ppt
- Linux(Centos)服务器时间校准
- 数学建模2-美国人口增长模型的确定
- app android切图工具,小白自学APP切图:APP切图工具Cutterman的参数设置
- [转载]关于太阳(卫星)天顶角,太阳高度角,太阳方位角的整理
- 下载美国气候数据中心地址
- python中fabs什么意思_Python中abs()和fabs()方法之间的区别
- mysql excel 函数_excel常用函数总结
- 教师计算机课游戏教学设计,有趣的游戏教学设计及课堂实录
- 网页设计之CSS3精要
- 【训练题66:状压暴力 | 子集dp】Greater Integer, Better LCM | 2021牛客暑期多校训练营5
- Event-B建模(四)——Rodin平台使用及Event-B语言
- vue 通过日期筛选数据
热门文章
- 全国首创 杜绝笔迹伪造的原笔迹电子签名生物识别技术
- php 目录类,php目录操作类
- 锂离子电池性能测试软件,锂离子电池性能测试检测方法介绍
- 青岛科技大学c语言试题,青岛科技大学6套C语言模拟题
- Linux操作系统常用命令整理
- c语言构成数组的各个元素,c语言习题六(数组部分)习题及答案.doc
- 在格外传统的能源领域,大数据和AI相关并购案呈爆炸式增长
- AI+隐私计算如何在未来掀起商业浪潮?|算力隐私专栏
- 数据仓库项目(第五节)数仓理论、电商业务数仓介绍与创建
- 【linux】循序渐进学运维-基础篇-crontab计划任务