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_工厂方法模式相关推荐

  1. JAVA设计模式是个什么玩意儿_00_工厂模式家族准备篇_简单工厂模式

    1. 前言 又叫静态工厂方法(Static Factory Method)模式. 它并不是GoF那23种设计模式之一. 简单工厂模式是工厂模式家族中最简单实用的模式. 虽然很简单,但它是学习工厂方法模 ...

  2. java/android 设计模式学习笔记(3)---工厂方法模式

    这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或 ...

  3. [Python设计模式] 第8章 学习雷锋好榜样——工厂方法模式

    github地址:https://github.com/cheesezh/python_design_patterns 简单工厂模式 v.s. 工厂方法模式 以简单计算器为例,对比一下简单工厂模式和工 ...

  4. 设计模式系列漫谈之二 - 工厂方法模式

    故事       10月1日是小雪的生日.许多追求者都想在生日那天给小雪一份意想不到的惊喜,并且表达自己的爱意.这些追求者绞尽脑汁的为小雪发送一个比较有创意的祝福短信.看来,小雪今年的生日过得肯定非常 ...

  5. 设计模式来一发(三)工厂方法模式

    1.定义 为某个对象提供一个接口,而且无需指定它们的具体类. 工厂方法模式,是简单工厂模式的延伸(https://blog.csdn.net/ss1300460973/article/details/ ...

  6. 大话设计模式读书 笔记(六) 工厂方法模式

    工厂方法模式(Factory Method) 书中通过一个学雷锋的例子,来引出工厂方法模式. 工厂方法模式:定义了一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类 ...

  7. 精通Java设计模式从初见到相爱之工厂+策略模式(3)

    为什么80%的码农都做不了架构师?>>>    1.公司项目需求. 用户签到活动,会员签到怎么处理,超级会员怎么处理,普通用户签到怎么处理,针对不同的档次,有不同的方案,所以在项目中 ...

  8. 设计模式之(Factory method)工厂方法模式

    1.需求 开发一个测试工具专门用于测试手机,测试流程打开分为以下几步:测试开机速度->测试屏幕亮度->测试相机效果.手机有很多种品牌:三星.小米.魅族等等. 2. 分析 不同的手机的测试流 ...

  9. 设计模式之工厂方法模式---factory method

    模式的介绍 模式的定义 Define an interface for creating an object,but let subclassed decide which class to inst ...

最新文章

  1. 分页功能 (包含增删改查)工具类
  2. 往年包场丘赛的北大,今年被清华逆袭了
  3. 反反复复的磁盘丢失故障处理过程
  4. PTA 寻宝路线 (40 point(s))
  5. H5禁止手机自带键盘弹出
  6. 计算机辅助设计源程序,计算机辅助设计(插值法程序).doc
  7. Android 网络评分机制
  8. 视频方向的变换by ppt
  9. Linux(Centos)服务器时间校准
  10. 数学建模2-美国人口增长模型的确定
  11. app android切图工具,小白自学APP切图:APP切图工具Cutterman的参数设置
  12. [转载]关于太阳(卫星)天顶角,太阳高度角,太阳方位角的整理
  13. 下载美国气候数据中心地址
  14. python中fabs什么意思_Python中abs()和fabs()方法之间的区别
  15. mysql excel 函数_excel常用函数总结
  16. 教师计算机课游戏教学设计,有趣的游戏教学设计及课堂实录
  17. 网页设计之CSS3精要
  18. 【训练题66:状压暴力 | 子集dp】Greater Integer, Better LCM | 2021牛客暑期多校训练营5
  19. Event-B建模(四)——Rodin平台使用及Event-B语言
  20. vue 通过日期筛选数据

热门文章

  1. 全国首创 杜绝笔迹伪造的原笔迹电子签名生物识别技术
  2. php 目录类,php目录操作类
  3. 锂离子电池性能测试软件,锂离子电池性能测试检测方法介绍
  4. 青岛科技大学c语言试题,青岛科技大学6套C语言模拟题
  5. Linux操作系统常用命令整理
  6. c语言构成数组的各个元素,c语言习题六(数组部分)习题及答案.doc
  7. 在格外传统的能源领域,大数据和AI相关并购案呈爆炸式增长
  8. AI+隐私计算如何在未来掀起商业浪潮?|算力隐私专栏
  9. 数据仓库项目(第五节)数仓理论、电商业务数仓介绍与创建
  10. 【linux】循序渐进学运维-基础篇-crontab计划任务