工厂方法模式是简单工厂模式的升级版,简单工厂模式不符合设计模式的原则(即:单一职责,开闭原则)

优点: 职责明确,扩展方便

缺点:需要创建多个工厂

实现步骤:

1.将工厂通用方法抽取接口 (例如:IFactory)

2.将产品抽取接口 (例如:ICar)

3.实现各种产品 (例如:BaomaCar,BentianCar)

4.给各种产品实现各自的对应工厂(例如: BaomaFactory,BentianFactory)

5.用户调用 (用户需要哪种产品就实例化哪种工厂去创建该产品)

具体代码实现:

1)将工厂通用方法抽取接口

public interface IFactory {
ICar createCar();
}

2)将产品抽取接口

public interface ICar {
String getName();
}

3)实现各种产品

public class BaomaCar implements ICar {
@Overridepublic String getName() {return "我是宝马车";
}
}

public class BentianCar implements ICar {
@Overridepublic String getName() {return "我是本田车";
}
}

4)给各种产品实现各自的对应工厂

public class BaomaFactory implements IFactory{
@Overridepublic ICar createCar() {return new BaomaCar();
}
}

public class BentianFactory implements IFactory{
@Overridepublic ICar createCar() {return new BentianCar();
}
}

5).用户调用

public class User {public static void main(String[] args) {//我需要宝马车 //1.创建宝马工厂
IFactory baomaFactory=new BaomaFactory();//2.通过宝马工厂创建宝马车
ICar baoma=baomaFactory.createCar();
System.out.println(baoma.getName());//我需要本田车 //1.创建本田工厂
IFactory bentianFactory=new BentianFactory();//2.通过本田工厂创建本田车
ICar bentian=bentianFactory.createCar();
System.out.println(bentian.getName());
}
}

输出结果:

工厂方法模式_工厂方法模式相关推荐

  1. 什么叫地推模式_地推模式一般使用什么方法可以成功?

    展开全部 地推模式一般使方法: 1.扫荡式地推,提升知名度: 对于62616964757a686964616fe58685e5aeb931333363396462一个新产品来说,要想快速提高一个产品的 ...

  2. python的盈利模式_八大盈利模式是什么?一篇文教会你盈利模式分析!

    当今如果说到创业,永远绕不开一个话题:"模式". 非创业者往往最关注的是"产品"或"服务": 初级创业者往往最关注的的是"行业&q ...

  3. 哈斯机床进去debug模式_责任链模式

    原文链接: 责任链模式 | 菜鸟教程​www.runoob.com 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请 ...

  4. shell开启飞行模式_手机飞行模式有什么用 手机飞行模式介绍【详解】

    手机飞行模式功能一直被大家吐槽为最没有用的手机功能,随着智能手机的快速发展,手机很多功能都已经逐渐消失被替代,唯独飞行模式依旧占据着手机设置里的主要地位. 那么问题来了,手机飞行模式到底有什么用? 1 ...

  5. 代理模式 委派模式 策略模式_设计模式 - 委派模式

    理解 首先委派模式不属于23种设计模式. 所谓委派,个人理解是:将为达到最终结果的事情交给其他人或中间人来干,我只要最终结果,其他的事情,由我委派的人来安排. 更直白的表达就是,比如,我们想要盖一栋楼 ...

  6. 设计模式 - 创建型模式_工厂方法模式

    文章目录 创建型模式 概述 Case Bad Impl Better Impl (⼯⼚模式优化代码) 接口定义 实现奖品发放接⼝ 创建商店⼯⼚ 单元测试 小结 创建型模式 创建型模式提供创建对象的机制 ...

  7. 灰度重采样的方法分为_重采样方法比较~

    展开全部 最邻近法(Nearest Neighbor):最邻近法直接将与某像元位置最邻近的像元值作为该像32313133353236313431303231363533e58685e5aeb93133 ...

  8. Hadoop 的三种运行模式_本地模式_伪分布式模式

    演示的版本是:2.7.2 官方文档 Hadoop运行模式 Hadoop运行模式包括:本地模式.伪分布式模式以及完全分布式模式. Hadoop官方网站:http://hadoop.apache.org/ ...

  9. java mediator模式_中介者模式(Mediator)

    中介者模式 一. 中介者模式 1.1 定义 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使耦合松散,而且可以独立的改变他们之间的交互. 1.2 角色 抽象中介者类(A ...

最新文章

  1. 关于SQLServer2000中触发器的使用——多行数据提交
  2. C++ 重载运算符和重载函数(一)
  3. 大林算法计算机控制实验报告,大林算法
  4. 计算机工程信息学院严翔,严翔校长第六次大师课
  5. db2 脚本运行错误返回错误原因_电脑运行错误代码大全,遇到报错请自己对照断电原因所在吧...
  6. 0编译器详解_详解Java枚举类型(Enum)中的方法
  7. 如何证明CPU的乱序执行(Out-of-order Execution)?
  8. 详解:hive启动hiveserver2连JDBC报错:Could not open client transport with JDBC Uri 解决方案
  9. xx是一个类型 这在给定的上下文_#PaperCarrier | CoSeRNN :为你解释序列化与上下文在会话推荐中的作用...
  10. Prometheus监控(二)
  11. Linux磁盘管理及Lvm
  12. 计算机知识竞赛形式,关于计算机知识竞赛试题
  13. JAVA学习笔记之J2SDK主要包介绍 (马士兵 教学视频)
  14. 什么是视频分配器 编码器
  15. 如何实现一个sandbox?
  16. 【盒模型】什么是盒模型
  17. 浅谈HTTP 和 HTTPS的区别
  18. alpine是什么 ?
  19. python入门之字符串索引,切片
  20. 51nod 1298 圆与三角形(几何知识)

热门文章

  1. 正方形个数(二维点哈希)
  2. 逆向工程核心原理学习笔记(七):总结
  3. cocos2d-x游戏实例(9)-A星算法(5)
  4. C++ lambda 捕获模式与右值引用
  5. live555 源码分析:RTSPServer 组件结构
  6. python中内置的数据结构有几种?
  7. 微服务下分布式事务模式的详细对比
  8. RabbitMQ负载均衡(4)——LVS
  9. 搞定系统设计 03:系统设计面试的答题框架
  10. 音视频技术开发周刊 | 155