Java 深入探究讲解抽象工厂模式
目录
- 1. 抽象工厂模式解决
- 2. 抽象工厂类图UML
- 3. 抽象工厂模式的主要角色
- 4. 代码实现
- 5. 抽象工厂方法再探究
- 6. 优缺点
- 7. 适用示例
解决工厂方法模式的问题:一个具体工厂只能创建一类产品,而实际过程中一个工厂往往需要生成很多的产品,这种可以采用抽象工厂模式。
1. 抽象工厂模式解决
定义:提供一个创建一系列相关或者互相依赖对象的接口,无需指定他们的具体的类,具体的工厂负责实现具体的产品的实例。使一个工厂可以产生多个产品。
2. 抽象工厂类图UML
3. 抽象工厂模式的主要角色
抽象工厂(AbstractFactory):提供了创建产品的接口,包含了多个创建产品的接口方法,可以创建多个不同等级的产品
具体工厂(ConcreteFactory):实现了抽象工厂定义的方法,完成具体产品的创建
抽象产品(Product):定义了产品的规范,描述产品的主要特征和性能
具体产品(ConcreteProduct):实现了抽象产品的定义的方法,有具体工厂来创建产品,具体工厂和具体产品一对多关系
4. 代码实现
抽象工厂方法实现:
public interface AbstractFactory { public Product1 createProduct1(); public Product2 createProduct2(); } public class ConcreteFactory1 implements AbstractFactory { @Override public Product1 createProduct1() { System.out.println("具体工厂1产生具体产品1..."); return new ConcreteProduct1(); } @Override public Product2 createProduct2() { System.out.println("具体工厂1产生具体产品2..."); return new ConcreteProduct2(); } }
使用步骤:
- 创建抽象产品类,定义产品的公共方法
- 创建具体产品类(实现抽象产品接口),定义生成的具体产品
- 创建抽象工厂类,定义具体工厂的公共接口,一个工厂类可以创建不同等级的产品
- 创建具体工厂类,定义创建对应具体产品实例的方法
- 调用方调用具体的工厂类的方法,从而创建不同具体产品的实例
5. 抽象工厂方法再探究
解决问题:每个工厂只能创建一类产品,即是工厂方法的缺点
6. 优缺点
优点:
- 可以在工厂类内部对产品中相关联的多级产品共同管理,而不必专门引入新的类来管理
- 抽象工厂增加了程序的可扩展性,当新增一个新的产品族时,不需要修改源代码,满足开闭原则
缺点:
- 当产品族新增一个产品类型时,所有的工厂类都需要进行修改,增加了系统的抽象性和理解难度
7. 适用示例
王者荣耀中提供了很多的英雄,英雄分为射手、辅助、打野、坦克等职业,不同的职业对应的技能,属性不同。声明坦克、法师、刺客等多个工厂子类,每个工厂可以生产相应技能的应用。
到此这篇关于Java 例举讲解抽象工厂模式的文章就介绍到这了,更多相关Java 抽象工厂内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Java 超详细讲解设计模式之中的抽象工厂模式
目录 抽象工厂模式 1.什么是抽象工厂 2.抽象工厂模式的优缺点 3.抽象工厂模式的结构与实现 4.抽象工厂方法模式代码实现 5.抽象工厂模式的应用场景 6.抽象工厂模式的扩展 抽象工厂模式 前面文章介绍的工厂方法模式中考虑的是一类产品的生产,比如案例中的百事可乐工厂只能生产百事可乐,可口可乐工厂只能生产可口可乐,也就是说:工厂方法模式只考虑生产同等级的产品. 1.什么是抽象工厂 在现实生活中许多工厂是综合型的工厂,能生产多种类)的产品,就拿案例里面的可乐来说,在节日的时候可能会有圣诞版的可乐,
-
Java设计模式之简单工厂 工厂方法 抽象工厂深度总结
目录 工厂模式介绍 好处 常见的应用 简单工厂(Simple Factory) 适用场景 角色分配: 应用案例: 优缺点: 简单工厂实现: 工厂方法(Factory Method) 适用场景 角色分配: 应用案例: 优缺点: 工厂方法实现: 抽象工厂(Abstract Factory) 适用场景 角色分配 应用案例: 优缺点: 抽象工厂实现 抽象工厂终极改进(反射+配置文件+简单工厂) 工厂模式介绍 工厂模式也是非常常见的设计模式之一,其属于创建型模式.工厂模式分类:简单工厂(Simple Fa
-
Java 深入理解创建型设计模式之抽象工厂模式
1.什么是抽象工厂模式? 抽象工厂模式: 定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类. 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合. 从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象). 将工厂抽象成两层,AbsFactory(抽象工厂))和具体实现的工厂子类.程序员可以根据创建对象类型使用对应的工厂子类.这样将单个的简单工厂类变成了工厂簇,更利于代码的维护和扩展. 我们仍然以上一篇文章的案例为主,画出抽象工厂模式下的类图
-
Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】
本文实例讲述了Java设计模式之工厂模式.分享给大家供大家参考,具体如下: 一. 简单工厂 先来思考一个问题.我们平时写程序时,会有这种情况,A对象里面需要调用B对象的方法,这时我们使用的一般是new关键字来创建一个B实例,然后调用B实例的方法.这种做法的坏处在于:A类的方法实现直接调用了B类的类名(这种方式也被称为硬编码耦合),一旦系统需要重构:需要使用C类来代替B类时,程序就不得不修改A类代码,如果应用中有100个或者10000个类以硬编码方式耦合了B类,则需要修改100个.10000个地方
-
深入理解Java设计模式之抽象工厂模式
目录 一.什么是抽象工厂模式 二.抽象工厂模式的应用场景 三.抽象工厂模式和工厂方法模式对比 四.抽象工厂模式的优缺点 五.抽象工厂模式的实现 六.总结 一.什么是抽象工厂模式 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式. 抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象. 根据里氏替换原则,任
-
Java设计模式之抽象工厂模式详解
一.什么是抽象工厂模式 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类,这称之为抽象工厂模式(Abstract Factory).我们并不关心零件的具体实现,而是只关心接口(API).我们仅使用该接口(API)将零件组装称为产品. 二.示例程序 1.抽象的零件:Item类 package com.as.module.abstractfactory; /** * 抽象的零件 * @author Andy * @date 2021/4/29 23:16 */ public
-
Java 深入探究讲解抽象工厂模式
目录 1. 抽象工厂模式解决 2. 抽象工厂类图UML 3. 抽象工厂模式的主要角色 4. 代码实现 5. 抽象工厂方法再探究 6. 优缺点 7. 适用示例 解决工厂方法模式的问题:一个具体工厂只能创建一类产品,而实际过程中一个工厂往往需要生成很多的产品,这种可以采用抽象工厂模式. 1. 抽象工厂模式解决 定义:提供一个创建一系列相关或者互相依赖对象的接口,无需指定他们的具体的类,具体的工厂负责实现具体的产品的实例.使一个工厂可以产生多个产品. 2. 抽象工厂类图UML 3. 抽象工厂模式的主要
-
Java 深入探究讲解简单工厂模式
目录 1. 简单工厂介绍 2. 简单工厂类图UML 3. 简单工厂角色说明 4. 代码实现 5. 优缺点 6. 使用场景 1. 简单工厂介绍 简单工厂有一个具体的工厂类,可以生产不同的产品,属于创建型设计模式. 注意:简单工厂模式 不属于23种设计模式之列 2. 简单工厂类图UML 3. 简单工厂角色说明 简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑,工厂类的创建产品类的方法可以被外界直接访问,创建所需的产品对象. 抽象产品(Product):是简
-
Java 深入探究讲解工厂方法模式
目录 1. 工厂方法模式介绍 2. 工厂方法模式类图UML 3. 工厂方法模式角色说明 4. 代码实现 5. 工厂模式再探究 6. 优缺点 7. 应用场景 1. 工厂方法模式介绍 定义:工厂方法模式是对简单工厂模式进一步的抽象化,好处是可以使系统不修改原来代码的情况下引进新的产品,即满足开闭原则.定义一个用于创建对象接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类中. 2. 工厂方法模式类图UML 3. 工厂方法模式角色说明 抽象工厂(AbstractFactory):提供了创建产品的
-
Java设计模式之抽象工厂模式浅析讲解
1.介绍 当系统准备为用户提供一系列相关对象,又不想让用户代码和这些对象形成耦合时,就可以使用抽象工厂模式. 2.如何实现 1)抽象产品--Car 2)具体产品--BYDCar.TSLCar 3)抽象工厂Factory 4)具体工厂--BYDFactory.TSLFactory 3.代码实现 /** * 抽象产品 */ public abstract class Car { public abstract String getName(); } /** * 具体产品 */ public clas
-
详解Java实践之抽象工厂模式
目录 一.前言 二.开发环境 三.抽象工厂模式介绍 四.案例场景模拟 4.1.场景模拟工程 4.2.场景简述 4.2.1.模拟单机服务 RedisUtils 4.2.2.模拟集群 EGM 4.2.3.模拟集群 IIR 4.3.单集群代码使用 4.3.1.定义使用接口 4.3.2.实现调用代码 五.代码实现 5.1.工程结构 5.2.ifelse实现需求 5.3.测试验证 六.抽象工厂模式重构代码 6.1.工程结构 6.2.代码实现 6.2.1.定义适配接口 6.2.2.实现集群使用服务 6.2.
-
Java 设计模式以虹猫蓝兔的故事讲解简单工厂模式
目录 专栏介绍 本期介绍 什么是简单工厂模式 优点 缺点 应用场景 简单工厂的实现 专栏介绍 本系列专栏会以虹猫蓝兔七侠传的故事为例来给大家详细分析所有模式,希望能给大家带来帮助! 本期介绍 模式: 简单工厂模式 案例: 一个天外陨石(抽象产品),三把剑(产品), 一个铸剑师(工厂). 虹猫蓝兔莎莉分别找铸剑师造了三把剑. 什么是简单工厂模式 工厂模式的定义: 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离"
-
Java设计模式之抽象工厂模式实例详解
本文实例讲述了Java设计模式之抽象工厂模式.分享给大家供大家参考,具体如下: 具体工厂类:生产创建某一类具体产品对象. 抽象产品类可以使用接口或者父类来描述产品对象的行为特征. 具体产品类就是某一具体的对象. 那么抽象工厂模式和工厂模式的不同之处呢? 其实最大的不同就在于,在产品类的结构更加复杂时,抽象工厂模式针对不同的产品族(就是一类产品对象)定义了不同的行为,也就是在父类或接口中,定义了不同的产生方法.不同的产品族调用各自的创建方法.同时不同的产品族横向比较,也有可归类的相同特征,这些特征
-
Java设计模式之抽象工厂模式
一.场景描述 接<Java设计模式(一)工厂模式> 工厂模式有一缺点,就是破坏了类的封闭性原则.例如,如果需要增加Word文件的数据采集,此时按以下步骤操作: 创建Word文件数据采集类,实现仪器数据采集接口: 修改仪器数据采集工厂类,增加Word文件数据采集类的工厂方法: 调用工厂类的word文件方法: 步骤2修改了工厂类,如果每增加一实现类都需要修改工厂类,那么这样就不合理了. 解决办法是使用抽象工厂类,为每一个实现类都创建其工厂类,并增加工厂接口,使各工厂类实现该接口. 使用抽象工厂后,
-
Java使用抽象工厂模式实现的肯德基消费案例详解
本文实例讲述了Java使用抽象工厂模式实现的肯德基消费案例.分享给大家供大家参考,具体如下: 一.模式定义 抽象工厂模式提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类. 抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品. 二.模式举例 1 模式分析 我们借用爸爸和儿子到肯德基店消费这一场景来说明这一模式,进行抽象分析后的截图如下 2 抽象工厂模式的静态建模 3 代码示例 3
随机推荐
- SQL Server 2008中的数据表压缩功能详细介绍
- 玩转jQuery按钮 请告诉我你最喜欢哪些?
- 详解vue2路由vue-router配置(懒加载)
- javascript unicode与GBK2312(中文)编码转换方法
- Angularjs CURD 详解及实例代码
- java正则表达式验证邮箱、电话号码示例
- 误删除$ORACLE_HOME/dbs下的参数文件、密码文件快速重建的方法
- javascript与jquery动态创建html元素示例
- 倾力总结40条常见的移动端Web页面问题解决方案
- 使用contextMenu插件实现Bootstrap table弹出右键菜单
- 详解Android中的多线程断点下载
- mysql的存储过程、游标 、事务实例详解
- 基于jQuery实现仿百度首页选项卡切换效果
- jquery DataTable实现前后台动态分页
- 解决Python中由于logging模块误用导致的内存泄露
- 深入浅析JDK8新特性之Lambda表达式
- 用Javascript数组处理多个字符串的连接问题
- PHP 获取文件权限函数介绍
- Android开发之自动朗读TTS用法分析
- Vue入门之数据绑定(小结)