java抽象工厂模式

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
下面是一个解释抽象工厂的小例子,定义了三类产品,分别为Fruit,ElecProduct,Traffic以及它们各自的产品
首先是Fruit

package com.lamp.factory.abstractfactory;

public abstract class Fruit {
public abstract void eat();
}

package com.lamp.factory.abstractfactory;

public class Apple extends Fruit{

@Override
public void eat() {
System.out.println("吃的是水果");
}

}

package com.lamp.factory.abstractfactory;

public class Banana extends Fruit{

@Override
public void eat() {
System.out.println("吃的是香蕉");
}

}



然后是ElecProduct

package com.lamp.factory.abstractfactory;

public abstract class ElecProduct {
public abstract void getName();
}

package com.lamp.factory.abstractfactory;

public class Computer extends ElecProduct{

@Override
public void getName() {
System.out.println("使用的是电脑");
}

}

package com.lamp.factory.abstractfactory;

public class Mobile extends ElecProduct{

@Override
public void getName() {
System.out.println("使用的是手机");
}

}



最后是Traffic

package com.lamp.factory.abstractfactory;

public abstract class Traffic {
public abstract void run();
}

package com.lamp.factory.abstractfactory;

public class Plane extends Traffic{

@Override
public void run() {
System.out.println("飞机在天上飞");
}

}

package com.lamp.factory.abstractfactory;

public class Car extends Traffic{

@Override
public void run() {
System.out.println("开的是car");
}

}



接着定义了一个总的抽象工厂,生产三类产品,具体生产的产品由其工厂类去决定

package com.lamp.factory.abstractfactory;

public abstract class MyAbstractFactory {
public abstract Traffic createTraffic();
public abstract ElecProduct createElecProduct();
public abstract Fruit createFruit();
}



第一个工厂类为DefaultFactory

package com.lamp.factory.abstractfactory;
/**
* 默认工厂生产的是car,Computer,Apple
*
*/
public class DefaultFactory extends MyAbstractFactory {

@Override
public Traffic createTraffic() {
return new Car();
}

@Override
public ElecProduct createElecProduct() {
return new Computer();
}

@Override
public Fruit createFruit() {
return new Apple();
}

}



另一个工厂类为NewFactory

package com.lamp.factory.abstractfactory;

/**
*
* 新工厂生产的是Plane,Mobile,Banana
*
*/
public class NewFactory extends MyAbstractFactory {

@Override
public Traffic createTraffic() {
return new Plane();
}

@Override
public ElecProduct createElecProduct() {
return new Mobile();
}

@Override
public Fruit createFruit() {
return new Banana();
}

}



最后进行测试

package com.lamp.factory.abstractfactory;

/**
*
* 抽象工厂的优点在于当你的工厂发生改变的时候,其不同类型对应的产品也会自动发生改变,就像常见的换肤效果
* 而且对已经存在的产品类型添加产品的时候也方便
* 当然如果要添加新的产品类型,这时需要在总的抽象工厂中添加新的类型以及在相应工厂中做相应修改,这也是抽象
* 工厂不足的地方
*
*/
public class Test {
public static void main(String[] args) {
//MyAbstractFactory factory = new DefaultFactory();
MyAbstractFactory factory = new NewFactory();
ElecProduct e = factory.createElecProduct();
e.getName();
Fruit f = factory.createFruit();
f.eat();
Traffic t = factory.createTraffic();
t.run();
}
}

相关推荐

【FOC无刷电机控制】六步换向、FOC,STM32cubemx从零开始搭建BLDC六步换相代码、FOC代码(基于霍尔传感器)

FOC、六步换相,无刷电机控制

xifan的博客 3万+

深入解析Java抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式定义了一个接口,用于创建相关的对象族,而不需要明确指定具体类。它通常包含多个工厂方法,每个工厂方法创建一类对象。通过抽象工厂,客户端可以通过调用工厂方法来创建对象,但客户端并不需要知道具体的类实现。首先,我们定义两个抽象产品类,分别代表按钮(Button)和文本框(TextField// 抽象产品1:Button// 抽象产品2:TextField// 具体产品1:WindowsButton@Override@Override// 具体产品2:MacButton。

一碗黄焖鸡三碗米饭的博客 1059

Python气象数据处理实战:用PyCINRAD轻松绘制雷达PPI图像(附避坑指南)

本文详细介绍了如何使用Python库PyCINRAD处理中国CINRAD系列天气雷达的基数据,并绘制专业的PPI图像。内容涵盖从环境配置、数据读取、核心绘图到高级定制与批量处理的完整流程,并针对安装依赖、中文乱码、数据范围等常见问题提供了实用的避坑指南,帮助气象工作者高效完成雷达数据可视化。

dog123的博客 221

02-Java抽象工厂模式 ( Abstract Factory Pattern )

1. 意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类2. 主要解决主要解决接口选择的问题3. 何时使用系统的产品有多于一个的产品族,而系统只消费其中某一族的产品4. 如何解决在一个产品族里面,定义多个产品5. 关键代码在一个工厂里聚合多个同类产品6. 应用实例。

深入Java世界:探索编程之美与技术深度 1735

sdc时钟约束2——多驱动时钟

sdc 多驱动时钟 master_clock

qq_40411444的博客 5527

Modscan32连接上了却没数据?一文拆解所有报错(从“Device NOT CONNECTED”到“Checksum Error”)

本文深入解析Modscan32连接异常问题,从状态栏报错到数据异常,提供系统化的诊断思路和解决方案。涵盖物理层问题、配置参数错位、端口占用冲突等常见故障,帮助工程师快速定位和解决Modbus通信中的各类错误。

weixin_30384217的博客 397

【设计模式】Java设计模式——抽象工厂模式(Abstract Factory Pattern)

本文主要介绍Java设计模式——抽象工厂模式,入门级别使用

Dust_heart的博客 878

【SWAT水文模型】SWAT-CUP参数率定与模型验证实战指南

本文提供了SWAT水文模型参数率定与模型验证的完整实战指南。详细介绍了如何使用SWAT-CUP工具,特别是SUFI-2算法,进行自动化参数校准,并阐述了模型验证的关键步骤以避免过度拟合。内容涵盖从工程搭建、核心参数选择、迭代优化到结果分析与常见问题排查的全流程,旨在帮助用户提升SWAT模型模拟的准确性与可靠性。

weixin_29072299的博客 499

Java23种设计模式 抽象工厂模式【Abstract Factory Pattern】

  本文章转载大佬CBF4LIFE的文章 博客地址:https://www.cnblogs.com/cbf4life/           好了,我们继续上一节课,上一节讲到女娲造人,人是造出来了,世界时热闹了,可是低头一看,都 是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋, Shit!忘记给人类定义性别了,那怎么办?抹掉重来,然后就把人类重新洗牌...

宇智波带土 207

YOLOv11改进 | Conv篇 | DWRSeg扩张式残差助力小目标检测 (附创新修改后的C3k2DWRSeg)

本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv11中的C2f和Bottleneck模块,主要针对的是小目标检测,主要创新点可以总结如下:多尺度特征提取机制的深入研究和创新的DWR模块和SIR模块的提出这种方法使得网络能够更灵活地适应不同尺度的特征,从而更准确地识别和分割图像中的物体。DWRSeg的基本原理和框架,并且能够在你自己的网络结构中进行添加DWRSeg需要增加一定的计算量一个DWR模块大概增加0.4GFLOPsYOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备。

Snu77的博客 4185

【纯干货分享】常用高速接口眼图模板合集

文章汇集了常见的高速接口的信号眼图测试模板技术要求,比如,LPDDR5/4、PCIe 5.0/4.0、USB、MIPI等等,方便工程师快速进行查询和使用。

一只豌豆象的博客 3116

Java 抽象工厂模式(Abstract Factory Pattern)

Java 抽象工厂模式(Abstract Factory Pattern)

sanmansan的博客 514

YOLO26剪枝 lamp剪枝测试精度仅掉0.7个点,速度提高11.8fps!

针对没有如何去选择剪枝的内容LAMP是层自适应幅度调整剪枝,无需任何参数,通过算法内部自己计算每个层的重要程度进行剪枝。基于权重重要程度和该层权重大小关系,权重越大表明该层越重要的思想进行优化。这个跟我前面说的非结构化全局剪枝是一个解法(MP),也就是lamp是在我前面那个非结构化剪枝的基础上进行优化的。但是这个逐层进行非结构剪枝目前还没有一个清晰的概念,确定每个层要剪枝多少。LAMP得分是一个平方权重大小,由层中所有“幸存权重”的总和归一化。

m0_64661770的博客 673

JAVA设计模式之 抽象工厂模式【Abstract Factory Pattern】

一、概述 二、适用chang

小吕丶Code阶区 3847

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java设计模式——抽象工厂模式(Abstract Factory Pattern)

一、抽象工厂模式定义

奔跑8蜗牛 385

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java设计模式 四 抽象工厂模式 (Abstract Factory Pattern)

是一种创建型设计模式,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。抽象工厂模式为产品族的创建提供了一个接口,其核心在于解决“产品族的扩展”和“客户端与具体工厂的解耦”。

空 854

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java设计模式--抽象工厂模式【Abstract Factory Pattern】

在上一篇中,我们对《中餐厅》的生产模式进行了改良,不同的菜系由不同的“工厂”生产。但是我们忽略了一个很重要的问题,在生产各种菜系时,各种菜系中所使用的配料谁来生产?比如湘菜和川菜中都使用了辣椒作为配料,但是这两种辣椒品种又是不一样的。这就需要我们了解今天要介绍的“抽象工厂模式”了。        抽象工厂模式是工厂方法模式的升级,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于

CoderLover 374

java设计模式之抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式的主要优点是隔离了具体类的生成,使得客户并不需要知道什么被创建,而且每次可以通过具体工厂类创建一个产品族中的多个对象,增加或者替换产品族比较方便,增加新的具体工厂和产品族很方便;主要缺点在于增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。

白话机器学习 300

Go和Java实现抽象工厂模式

Go和Java实现抽象工厂模式

YIYIYI 1583

Java工厂模式及抽象工厂模式详解

class ProductA implements Product { public void use() { System.out.println("使用产品A");class ProductB implements Product { public void use() { System.out.println("使用产品B");@Override public void paint() { System.out.println("Windows风格按钮");// 具体产品(Windows风格)

1892

Java Abstract Factory Pattern(抽象工厂模式)

Java Abstract Factory Pattern(抽象工厂模式) 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 优点:当一

mazaiting的博客 164

JAVA设计模式——(十)抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式在工厂模式的基础上,适配的对象变为一组相关的对象,为这一组对象提供一个接口。

不做菜虚困的博客 605

java设计模式——抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式产生的动机: 为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。 产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产

yj_android_develop的博客 740

Java实现(02)——抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式建立父类的工厂,通过父类创建子类工厂,通过子类工厂创建对象。 本例中有两个接口Shape和Color,通过两个子工厂,ShapeFactory和ColorFactory,父类工厂FactoryProducer生成相应的子类工厂。 public interface Shape { void draw(); }public class Square implements Sha

wangrl的博客 584

Java设计模式——创建型模式——抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式算是工厂相关模式的终极形态,如果完全理解了上一章的工厂方法模式,那么抽象工厂模式就很好理解了。它与工厂方法唯一的区别就是工厂的接口里是一系列创造抽象产品的方法,而不再是一个,而相应的,抽象产品也不再是一个了,而是一系列相关的产品。这其实是工厂方法模式的一种扩展。通常用继承和组合两种方式扩展一个接口或者类,一般我们推荐使用组合扩展一个现有的类或接口,但这并非绝对,如果你扩展的子类或子接口...

qq_32465815的博客 408

Java抽象工厂模式详解

Java抽象工厂模式是一种创建型设计模式,用于封装一组相关产品的创建过程。该模式通过抽象工厂接口定义产品创建方法,由具体工厂实现类负责创建特定系列的产品(如Windows/MacOS风格的UI组件)。主要包含四个角色:抽象工厂、具体工厂、抽象产品和具体产品。其优点包括解耦客户端代码、保证产品一致性,但扩展新产品类型时需要修改接口。适用于需要创建多系列相关产品的场景,如跨平台UI组件开发。相比于工厂方法模式,抽象工厂能处理更复杂的产品家族创建需求。

superfreeman的专栏 1545
上一篇: java工厂模式
下一篇: java之希尔排序
lk231_java
博客等级 码龄15年 0粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值