设计模式之--工厂方法模式(FactoryMethod )

传输线末端短路、开路、加电感的反射系数 时,频率变化约300MHz, 出现这种偏差是因为我们的计算中将电磁波传播速率默认为。时,频率变化约300MHz, 出现这种偏差是因为我们的计算中将电磁波传播速率默认为。下图为用网络分析仪实测一长度为30cm的传输线末端加一0.6uH的线圈的反射系数。下图为用网络分析仪实测一末端短路的长度为30cm的传输线的反射系数。下图为用网络分析仪实测一末端开路的长度为30cm的传输线的反射系数。末端加电感相当于在传输线末端延长了一段后末端短路,使得相位下降速率。幅度为0dB, 相位由。幅度为0dB, 相位由。 阅读详情

工厂方法模式(FactoryMethod )
是创建型模式之一,

 

        工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

  工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。

类图

public interface Vehicle {
	/**
	 * 启动
	 */
	public void star();
	/**
	 * 跑
	 */
	public void run();
	/**
	 * 停止
	 */
	public void stop();
}


 

/**
 * 子类产品(公交车)
 * @author 林道银
 *
 */
public class Bus implements Vehicle {

	/**
	 * 启动
	 */
	@Override
	public void star() {
		// TODO Auto-generated method stub
		System.out.println("公交车启动了!");
	}
	/**
	 * 跑起来
	 */
	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("公交车跑起来了!");
	}

	/**
	 * 停下来
	 */
	@Override
	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("公交车停下来了!");
	}
}


 

/**
 * 子类产品(轿车)
 * @author 林道银
 *
 */
public class Car implements Vehicle {

	@Override
	public void star() {
		// TODO Auto-generated method stub
		System.out.println("小轿车启动了!");
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("小轿车跑起来了!");
	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("小轿车停下来了!");
	}
}


 

/**
 * 工厂方法类
 * @author 林道银
 *
 */
public interface VehicleFactory {
	
	/**
	 * 实例化子类产品
	 * @return
	 */
	public Vehicle createVehicle();
}


 

/**
 * 生产轿车的工厂
 * @author 林道银
 *
 */
public class CarFactory implements VehicleFactory {

	/**
	 * 实例化子类工厂(轿车)
	 */
	@Override
	public Vehicle createVehicle() {
		// TODO Auto-generated method stub
		return new Car();
	}
}


 

/**
 * 生产公交车的工厂类
 * @author 林道银
 *
 */
public class BusFctory implements VehicleFactory {

	/**
	 * 实例化子类工厂(公交车)
	 */
	@Override
	public Vehicle createVehicle() {
		// TODO Auto-generated method stub
		return new Bus();
	}
}


 

public class Test {
	public static void main(String[] args) {
		
		VehicleFactory vehicle=new CarFactory();
		
		vehicle.createVehicle().star();
		vehicle.createVehicle().run();
		vehicle.createVehicle().stop();
	}
}


       工厂方法模式实现时,客户端需要决定实例化那一个工厂来实现汽车类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行.你想要加功能,本来是改工厂类的,而现在是修改客户端(如果想避免修改客户端代码可以利用'反射')

       工厂方法模式是简单工厂模式的进一步抽象和推广.由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点但缺点是由于每加一个产品,就需要加一个产品工厂类,增加了额外的开发量.

工厂方法模式的应用

     工厂方法经常用在以下两种情况中:

  第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。

  第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。

SMPTE ST 2110 概论(一) SMPTE ST 2110 概论(一)前言ST 2110与ST 2022-6ST 2110-10:基本结构与时序ST 2110-20:未压缩的视频流后续 前言 这是一份我在实习期间制作的,关于SMPTE ST 2110的简单介绍。 这篇文章主要以梳理总结 SMPTE ST 2110 的概念为主,关于具体的内容,比如IP数据报的格式、RTP时间戳的具体代码内容等等,大家可以查阅 SMPTE ST 2... 阅读详情

相关推荐

PCB Layout总结

PCB Layout作为硬件设计中的一个环节,也是很重要的一个环节;在硬件电路设计合理的情况下,他其实是影响性能的一个绝对重要的指标。现在很多的PCB Layout工程师都是按照硬件工程师或者PI SI工程师给出的约束规则来完成布局布线的,这些也就是俗称的 “拉线工”。他们重复而机械的完成一块块PCB设计,一段时间设计后,他们中的一些或许已经有了这样的一些经验:哪些要做等长,哪些要走粗、哪些要平...

xydlxd118的博客 2583

C++设计模式

文章目录简单工厂模式工厂方法模式抽象工厂模式 简单工厂模式 简单工厂模式有一个工厂,可以生产多个产品,包含两个接口,一个是产品类的,一个是工厂类的。 产品类需要有一个基类,基类中的具体产品实现需要是个纯虚函数,这样一来,产品的子类必须要重写具体的产品实现,实现不同的功能。 产品类封装完成后,还需要一个工厂类,工厂类对产品类再次封装,最终实现由一个工厂对象决定创建出哪一种产品类的实例。 //简单工厂模式 #include<iostream> using namespace std; #defin

xnxygxp的博客 1158

车载以太网SOMEIP入门必看:从服务发现到事件订阅,一次搞懂三种核心通信模式(附报文实例)

本文深入解析车载以太网SOME/IP的三种核心通信模式:服务发现、方法调用和事件订阅,通过真实报文实例和仿真工具演示,帮助开发者快速掌握这一关键技术。文章特别强调服务发现机制的基础作用,并详细介绍了Request/Response与Fire&Forget两种方法调用模式的应用场景,为智能汽车网络通信开发提供实用指南。

weixin_30955617的博客 111

【设计模式】(二)工厂方法模式详解

针对工厂方法模式进行详细讲解

qq_41526047的博客 2808

STM32实战开发(110):基于STM32的智能地震监测系统开发

地震监测系统是自然灾害预警体系中至关重要的一部分。随着地震灾害的频发和对自然灾害预测精度要求的提高,智能地震监测系统逐渐成为研究的热点。STM32作为一款高性能的微控制器,凭借其强大的处理能力和丰富的外设接口,在地震监测领域中得到了广泛应用。本篇文章将详细介绍如何使用STM32实现一个智能地震监测系统的开发过程,涵盖硬件设计、软件编程、系统实现及相关代码。通过集成加速度传感器、地震数据采集、实时数据处理和无线数据传输功能,我们可以设计一个高效、稳定的智能地震监测系统。

2201_76125393的博客 710

docker-compose Install OrangeHRM

OrangeHRM是一个全面的人力资源管理HRM) 系统,它包含任何企业所需的所有基本功能。OrangeHRM旨在支持任何规模的团队,包括初创企业、中小企业以及大型跨国组织。

极致,细节 1004

【设计模式】第4章·工厂方法模式

在工厂方法模式中不再提供一个统一的工厂类来创建所有的产品对象,而是针对不同的产品提供不同的工厂,系统提供一个与产品等级结构对应的工厂等级结构。

weixin_44143114的博客 1623

智能制造——解读AI+工业设备预测性维护解决方案【附全文阅读】

摘要:本方案面向设备密集型制造企业,提供基于AI的预测性维护解决方案。通过工业物联网、大数据和AI算法,整合传感器数据与专家知识库,构建异常检测、故障诊断等模型,实现设备台账管理、智能点检等核心功能。方案配套软硬件工具矩阵,已在锂电子等行业落地应用,可降低维护成本30%以上,减少非计划停机50%,助力企业智能化转型。

cdfunlove的博客 139

工厂模式-工厂方法模式

阐述工厂方法设计模式的详情

foshansuperinter的博客 969

2025高教社数学建模国赛A题 - 烟幕干扰弹的投放策略(完整参考论文)

摘要:本研究基于模拟遗传退火算法优化无人机投放烟幕弹策略,建立三维运动学模型分析遮蔽效果。针对不同战术场景(单机单弹至多机多弹),构建以遮蔽时间最大化为目标的非线性优化模型。通过改进遗传算法求解最优参数组合,结果显示在给定条件下单枚烟幕弹对M1导弹的有效遮蔽时长可达1.4秒。研究为无人机协同干扰提供了高效解决方案,验证了智能算法在复杂战术决策中的适用性。关键词:烟幕干扰;无人机投弹;运动学建模;时序优化;遗传算法。

ProminentWu的博客 544

零基础入门红外与可见光图像融合:DAF-Net 实战全指南

本文介绍了基于DAF-Net的红外与可见光图像融合技术,主要内容包括:技术原理、环境配置、数据准备和模型实现。DAF-Net通过双分支特征提取和动态注意力融合机制,有效结合红外图像的热辐射信息与可见光图像的纹理细节。文章详细讲解了开发环境搭建步骤(Python 3.8+PyTorch),TNO数据集的预处理方法,并提供了完整的DAF-Net实现代码,包含特征提取、注意力融合和图像重建三个关键模块。该技术可广泛应用于安防监控、自动驾驶等领域,帮助开发者快速入门多模态图像融合。

FJN110的博客 123

工厂方法模式(Factory Method Pattern)

工厂方法模式概述与demo实现

打盹儿的博客 1366

CDD数据库文件制作(二)——服务配置(0x27)

主要根据诊断调查表,针对0x27服务在CDD中的每一步配置给出详细介绍 1.会话切换配置 1.1.根据诊断调查表进行信息提取 1.2.子功能添加 1.2.1.Level1安全等级1创建 1.2.2.Level3安全等级3创建 1.2.3.安全等级名字查看与修改 1.3.会话切换信息提取(应用程序下) 1.4.会话转换配置(应用程序下) 1.5.会话切换信息提取(引导程序下) 1.6.会话转换配置(引导程序下) 2.安全等级配置信息提取 2.1.安全访问配置(level1) 2.2.安全访问配置(level2

LOVE135149的博客 2930

设计模式之FactoryMethod工厂方法模式

在《简单工厂模式》一节我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。 优点: 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。 灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。 典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。 缺点: 类的个数容易过多,增加复杂度

小胖七少爷的博客 264

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

设计模式之工厂方法模式(FactoryMethod模式)

模式的定义与特点 定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 工厂方法模式的主要优点有: 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程; 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则; 其缺点是:每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。 特点: 工厂方法模式中考虑的是一类产品的生产,

haoyuegongzi的博客 439

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

设计模式--工厂方法模式(FactoryMethod)

工厂方法模式(FactoryMethod) 在现实生活中社会分工越来越细,越来越专业化。各种产品有专门的工厂生产,彻底告别了自给自足的小农经济时代,这大大缩短了产品的生产周期,提高了生产效率。同样,在软件开发中能否做到软件对象的生产和使用相分离呢?能否在满足“开闭原则”的前提下,客户随意增删或改变对软件相关对象的使用呢?这就是本节要讨论的问题。 工厂方法模式的定义与特点 工厂方法(Factor...

吴声子夜歌的博客 1107

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

设计模式-工厂方法模式(FactoryMethod)-Java

设计模式-工厂方法模式-Java 目录 文章目录1、示例案例1.1、日志记录器的设计2、工厂方法模式概述2.1、工厂方法模式定义2.2、工厂方法模式要点2.3、工厂方法模式结构图中角色2.4、工厂方法模式使用2.5、思考3、工厂方法模式完整解决方案4、方案的改进4.1、反射与配置文件4.2、修改客户端代码4.3、新增日志记录方式4.4、重载的工厂方法4.5、工厂方法的隐藏5、总结5.1、优缺点5.2、适用场景***后记*** : 内容 1、示例案例   简单工厂模式虽然简单,但存在一个很严重的问题

gaogzhen的博客 484

设计模式之工厂方法模式(FactoryMethod)

工厂方法的定义 代码实现 /// <summary> /// 工厂类 /// </summary> public interface IFactory { IRace CreateInstance(); } public class HumanFactory : IFactory { public IRace CreateInstance() {

qq_29821795的博客 140

设计模式之工厂方法模式(FactoryMethod)

定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

天之道居同文。 607

设计模式入门之工厂方法模式FactoryMethod

N天之后,终于看懂这个模式了...我发现我在没有学会1+1之前,先去玩儿1+2去了... 我在自己实现都时候用到了这种方法,可是一味得去理解面向接口编程,结果觉得这样是面向对象编程方法不好... 到这里突然又理解类工厂方法模式的本质---把具体实现延迟到子类当中,这样的话以上这两种方法都可以理解了 另外,工厂方法模式很好地体现类“依赖倒置原则”,依赖---要依赖抽象,不要依赖于具体类 倒置---接口的所有权倒置到高层组件中去了,因为是高层组件提出的接口需求 感觉这三个月的工作假期太值了,在厦门大学这样一个非

王俊祥的菜鸟博客 956

设计模式——工厂方法模式_FactoryMethod

工厂方法模式 Define an interface for creating an object, but let subclasses decide which class to instantiate Factory Method lets a class defer instantiation to subclasses. 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法

492

iOS 设计模式之工厂方法模式(FactoryMethod)

工厂方法模式克服了简单工厂模式违背开放-封闭原则的缺点,保持了封装对象创建过程的优点。要更换对象时,无论用简单工厂模式还是工厂方法模式,都可以不用做大的改动,就可以实现,降低乐乐客户程序与产品对象的耦合。工厂方法模式是简单工厂模式的进一步抽象和推广,缺点是,每加一个产品,就要加一个产品工厂的类,增加了开发量。实例地址:https://github.com/clairehu7/DesignPatter

怀可的博客 600

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

简单工厂模式违反了高内聚的原则,把所有的产品创建都集中在了一个具体工厂里面,为了克服这个缺点,工厂方法模式诞生! 工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪个类,延迟实例化到子类。是简单工厂模式的升级版,有效的遵循了开放-封闭原则。 简单来说就是: 一个抽象产品类,可以派生出多个具体产品类。   一个抽象工厂类,可以派生出多个具体工厂类。   每个具体工厂类只能

Coder 一枚 1007

设计模式-工厂方法模式(FactoryMethod)

工厂方法模式又称多态工厂模式。工厂方法模式是定义一个创建产品对象的接口(FruitFactory),将具体创建工作给具体的实现类(AppFactory,BananaFactory,PearFactory)。 角色和职责: 1.抽象工厂(factory)-FruitFactory: 工厂方法模式的核心,任何工厂类必须实现这个接口 2.具体工厂(concrete factory...

weixin_30597269的博客 85

初学设计模式之工厂方法模式(FactoryMethod)

定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 结构 1、抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。 2、具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。 3...

weixin_42847086的博客 198

设计模式回顾之十:工厂方法模式(FactoryMethod)

设计模式回顾系列文章:主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。 ------------------------------------------------ 工厂方法模式(FactoryMethod) 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 适用于:   当一个类不知道它所必须创...

153
上一篇: 设计模式分类
下一篇: 24中设计模式+1的定义以及使用场合
HideLin
博客等级 码龄15年 6粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值