设计模式系列4-抽象工厂模式

手把手教你用Arduino Uno控制meArm机械臂(附完整代码+避坑指南) 本文提供了一份详尽的meArm机械臂控制指南,涵盖从Arduino Uno硬件连接到Servo库编程的完整流程。重点讲解了如何通过独立供电、软件限位和平滑运动函数实现稳定控制,并设计了串口指令协议与高级功能,帮助创客有效规避舵机抖动、电源不足等常见问题,让机械臂运行更流畅可靠。 阅读详情

设计模式系列4-抽象工厂模式

前言:

前一节讲了单例模式,这节我们讲23种设计模式之抽象工厂模式。

什么是抽象工厂模式?

1.抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。(最初的定义出现于《设计模式》(Addison-Wesley, 1994)).
2.抽象工厂与工厂方法:抽象工厂与工厂方法模式在许多方面都非常相似。很多人常常搞不清楚应该在什么时候用哪一个,两个模式都用于相同的目的:创建对象而不让客户端知晓返回了什么确切的具体对象。
抽象工厂工厂方法
通过对象组合创建抽象产品通过类继承创建抽象产品
创建多系列产品创建一种产品
必须修改父类的接口才能支持新的产品子类化创建者并重载工厂方法以创建新产品
3.软件设计的黄金法则:变动需要抽象。

何时使用抽象工厂模式?

1:如果希望一个系统独立于它的产品的创建,组合和表示的时候,换句话说,希望一个系统只是知道产品的接口,而不关心实现的时候
2:如果一个系统要由多个产品系列中的一个来配置的时候,换句话说,就是可以动态的切换产品簇的时候
3:如果要强调一系列相关产品的接口,以便联合使用它们的时候

抽象工厂的实现:

1.抽象工厂在Java中的实现
1.抽象产品类A的实现:
public abstract class AbstractProductA {	
	//每个产品共有的方法
	public void sharedMethod() {
		
	}
	
	//每个产品相同方法,不同实现
	public abstract void doSomething();
}

2.抽象产品类B的实现:
public abstract class AbstractProductB {
	//每个产品共有的方法
	public void sharedMethod() {
		
	}
	
	//每个产品相同方法,不同实现
	public abstract void doSomething();
}

3.具体产品类A1的实现:
public class ProductA1 extends AbstractProductA {
	public void doSomething() {
		System.out.println("产品A1的实现方法");
	}
}

4.具体产品类A2的实现
public class ProductA2 extends AbstractProductA {
	
	public void doSomething() {
		System.out.println("产品A2的实现方法");
	}
}

5.具体产品类B1,B2的实现同A1,A2

6.抽象工厂类的实现:(抽象工厂AbstractFactory类定义了每个具体工厂要实现的功能,此抽象工厂定义了两个产品家族的产品创建方法)
public abstract class AbstractFactory {
	
	//创建A产品家族
	public abstract AbstractProductA createProductA();
	
	//创建B产品家族
	public abstract AbstractProductB createProductB();
}
注:有N个产品家族,在抽象工厂中就有N个创建方法

7.创建产品则是由具体工厂实现的
等级1产品的实现:
public class Factory1 extends AbstractFactory {
	//只生产产品等级为1的A产品
	@Override
	public AbstractProductA createProductA() {
		return new ProductA1();
	}

	//只生产产品等级为1的B产品
	@Override
	public AbstractProductB createProductB() {
		return new ProductB1();
	}
}

等级2产品的实现:
public class Factory2 extends AbstractFactory {

	//只生产产品等级为2的A产品
	@Override
	public AbstractProductA createProductA() {
		return new ProductA2();
	}

	//只生产产品等级为2的B产品
	@Override
	public AbstractProductB createProductB() {
		return new ProductB2();
	}
}

8.具体的调用:
//定义出两个工厂
AbstractFactory creator1 = new Factory1();
AbstractFactory creator2 = new Factory2();
		 
//产生A1对象
AbstractProductA a1 = creator1.createProductA();
		 
//产生A2对象
AbstractProductA a2 = creator2.createProductA();
		 
//产生B1对象
AbstractProductB b1 = creator1.createProductB();
		 
//产生B2对象
AbstractProductB b2 = creator2.createProductB();


抽象工厂模式demo下载:http://download.csdn.net/download/yanglei_java/6369201

【全网最新】使用 1panel面板 部署若依系统( springboot 和 vue)项目 打开前端项目的vue.config.js文件,检查devServer下的proxy代理部分,然后将下面这个端口修改为你要在打包后访问的端口,即使用nginx代理前的接口。这个端口默认是80端口,这里把其修改为不会冲突的8010端口,后台接口的地址配置为9080,不过感觉这里设置的8010和9080可能没有用,因为部署前端静态页面是,也配置了一次网页的外部接口和api的接口,后期有空了再验证。打开右侧的Maven,点击:生存期->package,然后点击运行,等待打包成功,包在如图所示的文件夹中。 阅读详情

相关推荐

Honeywell EPKS 核心功能块组态与执行调度实战解析

本文深入解析Honeywell EPKS系统的核心功能块组态与执行调度技术,涵盖控制模块(CM)、顺序控制模块(SCM)和输入输出模块(IOM)的配置方法。通过实战案例分享执行顺序(ORDERINCM)和CEE执行周期的优化策略,帮助工程师提升工业自动化系统的控制精度和运行效率。

weixin_28724319的博客 385

设计模式---抽象工厂模式

一、什么是抽象工厂模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 二、抽象工厂模式的结构 图片来自网络 三、模式中包含的角色及其职责 1.抽象工厂(AbstractFactory)角...

业精于勤,荒于嬉 275

【PowerBI专栏】PowerBI导入MYSQL数据库

本文介绍了在PowerBI中连接MySQL数据库的方法。首先需要下载并安装MySQL官方.NET连接驱动(推荐8.4.0版本),安装完成后重启PowerBI。连接时需填写服务器IP和数据库名称等必填参数。文章详细说明了连接配置步骤,包括账户设置、数据表选择以及可能遇到的数据格式转换问题处理。最后指导用户完成数据清洗后进入PowerPivot进行后续计算。特别提醒最新9.4版本可能存在兼容性问题,建议使用稳定的8.4版本连接器。

技术与管理的平衡木- 624

设计模式(笔试+面试)

客户端使用抽象工厂来创建一系列相关的对象,而不需要知道这些对象的具体类。在实际的开发当中,传统的MVC三层架构需要控制层调用服务层,服务层调用dao层,dao层操作数据库,在对象调用过程中就需要手动的使用new关键字创建对象,此时类之间的依赖程度较高,耦合性就变高了。构建型(11种):策略模式,责任链模式,模板方法模式,观察者模式,迭代子模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。行为型(7种):适配器模式,代理模式,装饰器模式,外观模式,桥接模式,组合模式,享元模式

m0_64755704的博客 1198

牛客专项练习之设计模式

专项练习的设计模式部分的所有题目解析,解析仅供参考,有错的话可以提醒我改一下,谢谢

abucheck的博客 2161

设计模式笔记--抽象工厂模式

意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 适用性:在以下情况可以使用Abstract Factory模式 1.一个系统要独立于它的产品的创建、组合和表示时 2.一个系统要由多个产品系列中的一个来配置时 3.当你要强调一系列相关产品对象的设计以便进行联合使用4.当你提供一个产品类库,而只想显示他们的接口而不是实现时 结构 参与者

steven_liao的专栏 840

设计模式——抽象工厂模式

抽象工厂入门

qq_56412380的博客 1795

极速理解设计模式系列4.抽象工厂模式(Abstract Factory Pattern)

五个角色:抽象产品角色(AbstractProduct)、具体产品角色(Product)、抽象工厂角色(AbstractFactory)、具体工厂角色(ConcreteFactory)、客户端(Client)           抽象产品角色(AbstractProduct):声明产品接口          具体产品角色(Product):实现产品接口          抽象工厂角色(Ab

K-Ven博文程序员之窗 809

[置顶] 设计模式系列4-抽象工厂模式

设计模式系列4-抽象工厂模式   前言: 前一节讲了单例模式,这节我们讲23种设计模式抽象工厂模式。     什么是抽象工厂模式? 1.抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。(最初的定义出现于《设计模式》(Addison-Wesley, 1994)). 2.抽象工厂工厂方法:抽象工厂工厂方法模式在许多方面都非常相似。很多人常常搞...

weixin_34377919的博客 72

菜鸟硕枫设计模式系列4 抽象工厂模式

抽象工厂方法模式是用途最广的方法模式之一,其主要思想是利用工厂生产组合的复杂实例组,由于工厂、不同的实例组中实例一般都抽象为接口层次,所以很方便添加不同的具体工厂和不同的实例组。主要用于创建一系列相关的对象组或是其他方面。 抽象工厂方法模式类图: [img]http://dl.iteye.com/upload/attachment/364524/5c72b240-b5e1-3407-a...

dreaming架构师,充分践行,适当补充理论的一年 142

Java/Android 设计模式系列4--抽象工厂模式

再来介绍一下抽象工厂模式(Abstact Factory Pattern),也是创建型模式之一,上篇博客主要介绍了工厂方法模式抽象工厂模式工厂方法模式稍有区别。工厂方法模式工厂类生产出来的产品都是具体的,也就是说每个工厂都会生产某一种具体的产品,但是如果工厂类中所生产出来的产品是多种多样的,工厂方法模式也就不再适用了,就要使用抽象工厂模式了。   抽象工厂模式的起源或者最早的应用,是对不同操

Jakey黄导的专栏-封存三年的博客重新开启 415

c++设计模式系列_C++进阶系列设计模式4)建造者模式抽象工厂模式

1、建造者模式一个对象的构建比较复杂,将一个对象的构建和对象的表示进行分离!!!2、具体实现(1)、代码如下#include#includeusing namespace std;class House{ public: void setDoor(string door){ this->m_door = door; } ...

weixin_40008946的博客 139

设计模式系列文章(基础篇第 4 篇):抽象工厂模式——创建一组关联产品

1. 核心定义抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。通俗地说,抽象工厂模式就像一个“综合性的产品生产线”:它不仅能生产一种产品,还能生产一组相互关联、相互配合的产品。比如电脑工厂,不仅能生产CPU,还能生产配套的显卡、内存,且所有产品都属于同一个品牌,保证了产品之间的兼容性和关联性。我们使用时,只需找到对应的综合性工厂,就能一次性获取一组关联产品,无需分别创建每种产品,也无需担心产品组合错误。

qq_29757467的博客 350

python抽象工厂模式_抽象工厂模式

一、前言抽象工厂模式,创建型设计模式之一。抽象工厂起源于以前对不同操作系统的图形化解决方案,如不同操作系统中的按钮和文本框控件其实现不同,展示效果也不一样,对于每一个操作系统,其本身就构成一个产品类,而按钮和文本框控件也构成一个产品类,两种产品类两种变化,各自有自己的特性。二、定义抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,无须指定它们具体的类。三、适用场景1、客户端(应用层)不依赖于...

weixin_39940957的博客 195

php 抽象工厂模式,PHP设计模式(三)抽象工厂模式(Abstract Factory)

一、什么是抽象工厂模式抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件:系统中有多个产品族,而系统一次只可能消费其中一族产品。同属于同一个产品族的产品可以使用产品族:位于不同产品等级结构中,功能相关联的产品组成的家族。下面例子的 汽车和空调就是两个产品树, 奔驰C200+格力某型号空调就是一个产品族, 同理, 奥迪A4+海尔某型号...

weixin_35804997的博客 184

【第二节】C++设计模式(创建型模式)-抽象工厂模式

(1) 核心思想抽象工厂模式通过定义一个创建一系列相关或相互依赖对象的接口,将具体对象的创建工作封装到具体的工厂类中。它强调面向接口编程,支持多种变化需求,同时确保生成的对象的关联性和兼容性。(2)与工厂方法模式的关系工厂方法模式:解决单一对象的创建问题,通过子类化实现对象的创建。抽象工厂模式:解决一系列相互依赖对象的创建问题,通过一个工厂类创建多个相关对象。(3)主要解决的问题避免直接使用 `new` 操作符导致的对象绑定问题。支持多种变化需求(如多种数据库、多种产品系列)。

攻城狮7号的博客 1372

设计模式创建型——抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用于产品族的构建。抽象工厂是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂是指当有多个抽象角色时使用的一种工厂模式抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。

tszc95的博客 9832

设计模式——抽象工厂

抽象工厂是一种创建型的设计模式,它允许您生成一系列相关的对象而无需指定它们的具体类。

y小川的专栏 1336

JAVA设计模式抽象工厂模式

抽象工厂模式 定义 提供一个创建一系列相关或相互依赖对象的“接口”,而无需指定它们具体的类。 结构与说明 AbstractFactory:抽象工厂,定义创建一系列产品对象的操作接口。 ConcreteFactory:具体的工厂,实现抽象工厂定义的方法,具体实现以系列产品对象的创建。 AbstractPorduct:定义一类产品对象的接口。 ConcreteProduct:具体的产品实现对象,通常在具体工厂里面,会选择具体的产品实现对象,来创建符合抽象工厂定义的方法返回的产品类型的对象。 Client:客户

weixin_43664383的博客 317

24设计模式+1的定义以及使用场合

一.创建型模式(Creational): 简单工厂模式(simpleFactory)发音:['simpl]['fækt(ə)rɪ]        定义:        提供一个创建对象实例的功能,而无须关心其具体实现.被创建实例的类型可以是接口,抽象类,也可以是具体的类.   1.抽象工厂(AbstractFactory)发音:['æbstrækt]        定义:

林道银 2090

ArcHyd10_1

ArcHydroTools10_1.zip是arcgis10.1的插件,用于dem提取流域边界。

JDspider_jdspider_python爬虫_京东_

爬取京东商品页面优惠价格,每天通过邮箱提醒自己

上一篇: 从业IT两年多来的一点感受
下一篇: 设计模式系列5-建造者模式
杨石头
博客等级 码龄15年 11粉丝 18原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值