设计模式------工厂方法模式

设计模式------工厂方法模式

前言

工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。工厂方法模式是一种类创建型模式。


一、UML图

在这里插入图片描述
抽象工厂角色(Creator):是工厂方法模板的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。

具体工厂角色(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序相关的逻辑,并且受到应用程序调用以创建产品对象。

抽象产品角色(Product):工厂方法模式所创建的对象的超类型,也就是对象的共同父类或共同拥有的接口。

具体产品角色(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂船舰,他们之间往往一一对应。

二、优点

  • 当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要(尽量小的)修改客户端,较好的符合了“开放–封闭”原则。而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好。

三、缺点

  • 具体产品对象与工厂方法的耦合性:工厂方法时要创建产品对象的,也就是需要选择具体的产品对象,并创建他们的实例。因此具体产品对象与工厂方法是耦合的。

四、实质

  • 延迟到子类来选择实现

五、体现的原则

  • 工厂方法模式很好的体现了“依赖倒转原则”
  • 依赖倒置原则告诉我们“要依赖抽象,不要依赖于具体类”,简单点说就是:不能让高层组件依赖于低层组件,而且不管高层组件还是低层组件,都应该依赖于抽象。

六、应用场景

  • 如果一个类需要创建某个接口对象,但又不知道具体的实现,这种情况可以选用工厂方法模式,把创建对象的工作延迟到子类中实现。
  • 如果一个类本身就希望由他的子类来创建所需要的对象的时候,应该使用工厂方法模式

七、相关模式

1、工厂方法模式和抽象工厂模式

       这两个模式既有区别,又有联系,可以组合使用。
       工厂方法模式一般针对单独的产品对象创建,而抽象工厂模式注重产品簇对象的创建,这是他们的区别。
       如果把抽象工厂创建的产品簇简化,这个产品簇就只有一个产品,那么这个时候的抽象工厂跟工厂方法是差不多的,也就是抽象工厂可以退化成工厂方法,而工厂方法又可以退化成简单工厂,这是他们的联系。
       在抽象工厂的实现中,还可以使用工厂方法来提供抽象工厂的具体实现,也就是说他们可以组合使用。

2、工厂方法模式和模板方法模式

       这两个模式外观类似,都有一个抽象类,然后由子类来提供一些实现,但工厂方法模式的子类专注的是创建产品对象,而模板方法模式的子类专注的是为了固定的算法骨架提供某些步骤的实现。
       这两个模式可以组合使用,通常在模板方法模式里面,使用工厂方法来创建模板方法需要的对象

八、示例代码

要求简述:
在实际的企业应用中,一个公司的系统往往分散在很多不同的地方运行。公司既没有建立全公司专网的实力,又不愿意让业务数据实时地在广域网上传递。折中的方案是各分公司内运行系统独立,每天业务结束时,各分公司导出业务数据、打包、传送给总公司。
 导出数据格式会有不同要求

 文本格式、数据库备份格式、Excel格式、Xml格式

 分清哪是产品类、哪是工厂类

//产品类接口
public interface ExportFileApi{
	public boolean export(String data);
}
//具体产品类
public class ExportDB implements ExportFileApi{
	public boolean export(String data){
		System.out.println("导出数据"+data+"到数据库备份文件";
		return true;
	}
}


public class ExportTxtFile implements ExportFileApi{
	public boolean export(String data){
		System.out.println("导出数据"+data+"到文本文件";
		return true;
	}
}
//抽象工厂类
public abstract class ExportOperate {
	public boolean export(String data){
		ExportFileApi api=factoryMethod();
		return api.export(data);
	}
	protected abstract ExportFileApi factoryMethod();
}
//具体工厂类
public class ExportDBOperate extends ExportOperate {
		protected ExportFileApi factoryMethod() {
			return new ExportDB();
	}
}

public class ExportTxtFileOperate extends ExportOperate {
	protected ExportFileApi factoryMethod(){
		return new ExportTxtFile();
	}
}
//客户端
public class Client {
	public static void main(String[] args) {
		ExportOperate operate =new
		ExportDBOperate();
		operate.export("测试数据");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能制造新模式及智能工厂建设 - 2 - 前言 智能制造的困惑 - 3 - 前言 - 4 - 前言 信息化维度 装备维度 人工智能维度 物联维度 数据维度 管理维度 - 5 - 前言 获得资源 提升竞争力 轻松管控 Contents Page 目录页 二 智造的管理基础 三 智造的硬件基础 五 系统集成与实施 四 智造的软件基础 一 智造的企业应用 Contents Page 目录页 二 智造的管理基础 三 智造的硬件基础 五 系统集成与实施 四 智造的软件基础 一 智造的企业应用 01 工业发展趋势 02 所解决的痛点 03 企业应用场景 - 8 - 01 工业发展趋势 为什么工业的未来属于人工智能和智能制造? 第一次工业革命 第二次工业革命 第三次工业革命 第四次工业革命 放大体力 蒸汽时代 放大精确力 电气时代 放大记忆力 放大计算力 放大执行力 信息时代 放大思考力 智能时代 01 02 03 04 - 9 - 01 工业发展趋势 未来灭的就是不变的你,自己不革命· · · 我消灭你,与你无关 ——《三体》 - 10 - 02 所解决的痛点 企业的 竞争力在哪里? Q C D 产品质量 工作质量 品牌质量 品质 工作效率 快速反应 交期 价格优势 利润空间 成本 - 11 - 02 所解决的痛点 很多企业的现状:三高状态 - 12 - 02 所解决的痛点 运输的QCD目标 恒速度 无障碍 专线 加减速专区 零故障 合理使用 合理维护 预防性维修 高负载 承载大 空间利用率高 低油耗 经济时速 省油型车辆 多 省 安全 快 - 13 - 02 所解决的痛点 提高运输能力的方法 对应的企业解决方案 清除路上的障碍物 消除浪费 制定交通规则,安装红绿灯等 断点拉动 消除十字路口、限定车速 价值流动 选更适合的车、轻装上阵 提炼价值 安装GPS 实时数据采集 无人驾驶、遥控驾驶 自动化,智能化 交通运输管理系统 信息化,智能化 更换交通方式 流程再造或者工艺调整 - 14 - 02 所解决的痛点 可以头尾相连的EO-Smart 2无人驾驶电动汽车 - 15 - 02 所解决的痛点 解决之道 - 16 - 03 企业应用场景 智能制造的系统架构 - 17 - 03 企业应用场景 智能工厂架构 - 18 - 03 企业应用场景 智能制造的四大基本要素 产品 智能化 设备 智能化 管理 智能化 服务 智能化 可追溯 可识别 可定位 感知决策 执行维护 自组织 自适应 数据驱动 信息集成 组织优化 流程再造 智能化 生产方式 研 发 设 计 加 工 制 造 传感无所不在 信息网络技术 从生活领域向生产领域 加速延伸 生产工具 生产模式 生产组织形态 连接无所不在 数据无所不在 计算无所不在 服务无所不在 创新 突破 变革 需求挖掘 实时响应 用户参与 - 19 - 03 企业应用场景 智能制造的系统架构:系统层级 设备层:数控机床、机器人、传感器、仪器仪表等 企业层:面向企业的经营管理,ERP、PLM、SCM、CRM等 车间层:实现面向工厂/车间的生产管理,包括MES等 控制层:SCADA、DCS、现场总线、PLC、控制系统等 协同层:企业共享信息实现协同研发、智能生产、精准物流和智能服务等 企业层:面向企业的经营管理,ERP、PLM、SCM、CRM等 车间层:实现面向工厂/车间的生产管理,包括MES等 控制层:SCADA、DCS、现场总线、PLC、控制系统等 协同层:企业共享信息实现协同研发、智能生产、精准物流和智能服务等 - 20 - 03 企业应用场景 AI在智能工厂中的应用 基础支撑 大数据 Title Goes Here 语音 视觉 触觉 推理 基础支撑 云计算 智能应用 创造 弱AI 强AI 深度学习 智能应用 连续性学习 深度学习 创造型学习 - 21 - 03 企业应用场景 强AI可预见的后果 - 22 - 03 企业应用场景 弱AI在智能工厂中的应用 01 人工编程 机器根据指令执行,从结果上看是智能的 02 设定任务 机器采集数据、学习、找出规律,完成任务 Contents Page 目录页 二 智造的管理基础 三 智造的硬件基础 五 系统集成与实施 四 智造的软件基础 一 智造的企业应用 01 数据与智造 02 流程与智造 03 精益与TPM - 24 - 01 数据与智造 智能制造基础中的基础 - 25 - 01 数据与智造 三分技术 七分管理 十分数据 技术、管理、数据之间的关系 - 26 - 01 数据与智造 企业资源管理 企业中的数据流现状 - 27 - 01 与智造 Volume (大量) Velocity(高速) Variety (多样) Value (价值) 稳定性 准确性 稳定性 稳定性 可实时性

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值