工厂方法模式_工厂方法模式
工厂方法模式是简单工厂模式的升级版,简单工厂模式不符合设计模式的原则(即:单一职责,开闭原则)
优点: 职责明确,扩展方便
缺点:需要创建多个工厂
实现步骤:
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.扫荡式地推,提升知名度: 对于62616964757a686964616fe58685e5aeb931333363396462一个新产品来说,要想快速提高一个产品的 ...
- python的盈利模式_八大盈利模式是什么?一篇文教会你盈利模式分析!
当今如果说到创业,永远绕不开一个话题:"模式". 非创业者往往最关注的是"产品"或"服务": 初级创业者往往最关注的的是"行业&q ...
- 哈斯机床进去debug模式_责任链模式
原文链接: 责任链模式 | 菜鸟教程www.runoob.com 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请 ...
- shell开启飞行模式_手机飞行模式有什么用 手机飞行模式介绍【详解】
手机飞行模式功能一直被大家吐槽为最没有用的手机功能,随着智能手机的快速发展,手机很多功能都已经逐渐消失被替代,唯独飞行模式依旧占据着手机设置里的主要地位. 那么问题来了,手机飞行模式到底有什么用? 1 ...
- 代理模式 委派模式 策略模式_设计模式 - 委派模式
理解 首先委派模式不属于23种设计模式. 所谓委派,个人理解是:将为达到最终结果的事情交给其他人或中间人来干,我只要最终结果,其他的事情,由我委派的人来安排. 更直白的表达就是,比如,我们想要盖一栋楼 ...
- 设计模式 - 创建型模式_工厂方法模式
文章目录 创建型模式 概述 Case Bad Impl Better Impl (⼯⼚模式优化代码) 接口定义 实现奖品发放接⼝ 创建商店⼯⼚ 单元测试 小结 创建型模式 创建型模式提供创建对象的机制 ...
- 灰度重采样的方法分为_重采样方法比较~
展开全部 最邻近法(Nearest Neighbor):最邻近法直接将与某像元位置最邻近的像元值作为该像32313133353236313431303231363533e58685e5aeb93133 ...
- Hadoop 的三种运行模式_本地模式_伪分布式模式
演示的版本是:2.7.2 官方文档 Hadoop运行模式 Hadoop运行模式包括:本地模式.伪分布式模式以及完全分布式模式. Hadoop官方网站:http://hadoop.apache.org/ ...
- java mediator模式_中介者模式(Mediator)
中介者模式 一. 中介者模式 1.1 定义 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使耦合松散,而且可以独立的改变他们之间的交互. 1.2 角色 抽象中介者类(A ...
最新文章
- 关于SQLServer2000中触发器的使用——多行数据提交
- C++ 重载运算符和重载函数(一)
- 大林算法计算机控制实验报告,大林算法
- 计算机工程信息学院严翔,严翔校长第六次大师课
- db2 脚本运行错误返回错误原因_电脑运行错误代码大全,遇到报错请自己对照断电原因所在吧...
- 0编译器详解_详解Java枚举类型(Enum)中的方法
- 如何证明CPU的乱序执行(Out-of-order Execution)?
- 详解:hive启动hiveserver2连JDBC报错:Could not open client transport with JDBC Uri 解决方案
- xx是一个类型 这在给定的上下文_#PaperCarrier | CoSeRNN :为你解释序列化与上下文在会话推荐中的作用...
- Prometheus监控(二)
- Linux磁盘管理及Lvm
- 计算机知识竞赛形式,关于计算机知识竞赛试题
- JAVA学习笔记之J2SDK主要包介绍 (马士兵 教学视频)
- 什么是视频分配器 编码器
- 如何实现一个sandbox?
- 【盒模型】什么是盒模型
- 浅谈HTTP 和 HTTPS的区别
- alpine是什么 ?
- python入门之字符串索引,切片
- 51nod 1298 圆与三角形(几何知识)