`
这些年
  • 浏览: 400393 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zy19982004--设计模式学习六:抽象工厂模式

 
阅读更多

一.概念

     抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确知道具体类。

 

二.实例分析

 

     CPU

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * CPU接口 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public interface CPU {  
  8.     public void work();  
  9. }  

 

     WDCPU/SamSungCPU/SeagateCPU类似,只贴出一个

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * 西数CPU 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class WDCPU implements CPU{  
  8.   
  9.     @Override  
  10.     public void work() {  
  11.         System.out.println("西数CPU is working...");  
  12.     }  
  13.   
  14. }  

 

     Disk

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * CPU接口 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public interface Disk {  
  8.     public void write();  
  9. }  

 

     WDDisk/SamSungDisk/SeagateDisk类似,只贴出一个

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2.   
  3. public class WDDisk implements Disk {  
  4.   
  5.     @Override  
  6.     public void write() {  
  7.         System.out.println("西数硬盘 is working...");  
  8.     }  
  9.   
  10. }  

 

     AbstractFactory

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * 抽象工厂接口 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public interface AbstractFactory {  
  8.     public CPU createCPU();  
  9.     public Disk createDisk();  
  10. }  

 

     WDFactory/SamSungFactory/SamSungFactory类似,只贴出一个

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * 三星工厂 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class WDFactory implements AbstractFactory{  
  8.   
  9.     @Override  
  10.     public CPU createCPU() {  
  11.         return new WDCPU();  
  12.     }  
  13.   
  14.     @Override  
  15.     public Disk createDisk() {  
  16.         return new SamSungDisk();  
  17.     }  
  18. }  

 

     TestAbstractFactory

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * 测试类 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class TestAbstractFactory {  
  8.     public static void main(String[] args) {  
  9.         //三星工厂  
  10.         AbstractFactory factory = new WDFactory();  
  11.         //三星工厂生产的CPU  
  12.         CPU cpu = factory.createCPU();  
  13.         //三星工厂生产的硬盘  
  14.         Disk disk = factory.createDisk();  
  15.         cpu.work();  
  16.         disk.write();  
  17.     }  
  18. }  

 

三.抽象工厂模式的产品等级与产品族

  1. 抽象工厂:用来生产不同产品族的全部产品。
  2. 抽象工厂是应对产品族概念的,所以抽象工厂接口要能生产同一产品族中的所有产品。

四.简单工厂,工厂方法,抽象工厂的联系去区别

  • 从类的角度

          简单工厂:只有一个具体工厂类来创建一种基类的不同派生类。

          工厂方法:有多个派生于一个基类的具体工厂类,每个工厂类只生产一种基类的一个派生类。

          抽象工厂:只有一个工厂基类,其具体派生类生产相关基类的各一个派生类。

 

  • 从产品等级与产品族的角度

          简单工厂:生产同一等级结构中的任意产品。

          工厂方法:生产同一等级结构中的固定产品。

          抽象工厂:生产不同产品族的全部产品。

分享到:
评论

相关推荐

    ZY3-01星SC产品命名规范20160217.pdf

    ### ZY3-01星SC产品命名规范详解 #### 一、前期数据命名规则解析 根据提供的信息,我们可以了解到ZY3-01星SC产品的前期数据命名规则如下: **Zy3_01a_mynnavp_PPPRRR_YYYYMMDD_hhmmss_tttt_sasmac_chn_xxx_zzz_##...

    ZY08-C循迹、红外避障、遥控综合程序代码

    ZY08-C的综合程序可能采用模块化设计,包括循迹模块、避障模块和遥控模块,每个模块独立运行且可以互相协作。主循环负责协调各个子系统的操作,确保它们在不同场景下无缝切换。此外,程序还可能包含故障诊断和恢复...

    6、ZY08-C循迹、红外避障、遥控综合程序.rar_51单片机 循迹避障 红外遥控_zy08-c_红外遥控小车

    这个名为"ZY08-C循迹、红外避障、遥控综合程序.rar"的压缩包包含了实现这些功能所需的所有软件资源,特别是对于51单片机这种广泛应用的微控制器而言,这样的设计展示了其在自动化和远程控制领域的潜力。 首先,让...

    RF-CZ-ZY-03 供应商入围及评估管理作业指引(1).zip

    《RF-CZ-ZY-03 供应商入围及评估管理作业指引》是针对企业在供应链管理中的一个重要环节——供应商选择与评估的规范性文档。在现代商业环境中,供应商管理是企业运营的关键部分,它直接影响到产品质量、成本控制和...

    ZY08-C循迹 寻黑线程序_keilc51_zy08-c智能循迹_黑线循迹程序_ZY08C智能循迹_

    总的来说,ZY08-C循迹寻黑线程序是一个集成了硬件感知、软件控制和智能算法的综合项目,它展示了单片机在自动化控制领域的应用,对于学习单片机编程、智能小车设计以及传感器应用的人来说,是一个很好的实践案例。

    RF-CB-ZY-03-F03 设计变更估算汇总表.zip

    "RF-CB-ZY-03-F03 设计变更估算汇总表"是一个可能用于记录和管理这些变更的重要文档,通常以电子表格的形式存在,如本例中的".xls"文件。下面我们将深入探讨这个主题,了解设计变更估算汇总表的关键组成部分和作用。...

    RF-SJ-ZY-04-F17 住宅方案评审检查表-给排水.zip

    《住宅方案评审检查表-给排水》是针对住宅建设中给排水系统设计的重要评估工具,主要目的是确保住宅项目的给排水方案符合国家规范、行业标准以及项目自身的需求,从而保证居民的生活用水安全和环境质量。这份文档...

    RF-CB-ZY-04 工程结算及复核作业指引.zip

    《RF-CB-ZY-04 工程结算及复核作业指引》是针对建筑工程行业中的一项重要流程,旨在规范工程项目的结算与复核工作,确保财务数据的准确性和工程项目的顺利完成。这一作业指引通常包含一系列详细的操作步骤、规定以及...

    RF-GC-ZY-08-F06 材料进场验收单(1).zip

    【RF-GC-ZY-08-F06 材料进场验收单】是建筑行业中一个重要的文档,主要用于记录和管理施工现场材料的接收和检验过程。这个文档通常由项目管理团队或质量控制部门填写,确保所有进场的建筑材料符合工程设计、质量和...

    9.ZY08-C智能小车配套例程代码.zip

    "9.ZY08-C智能小车配套例程代码.zip"是一个压缩包文件,包含了为这种特定型号智能小车设计的功能程序和相关的注释。这些代码是实现小车智能化运作的关键,通过分析和理解这些代码,我们可以深入学习智能小车的工作...

    RF-KF-ZY-02-F07 维修验收记录表(1).zip

    这个名为"RF-KF-ZY-02-F07 维修验收记录表(1).zip"的压缩包文件,显然包含了针对某一特定设备或系统维修后进行验收过程的详细记录。以下是关于维修验收记录表的一些关键知识点: 1. **维修验收的目的**:维修验收的...

    RF-YX-ZY-06 销售总结编写作业指引.zip

    "RF-YX-ZY-06 销售总结编写作业指引.zip"是一个压缩包文件,其中包含的"RF-YX-ZY-06 销售总结编写作业指引.doc"文档,很显然是一个指导如何有效编写销售总结的详细指南。以下将深入探讨销售总结的主要内容、重要性...

    ZY08-C循迹加红外避障综合程序代码

    【ZY08-C循迹加红外避障综合程序代码】是一种专为智能小车设计的控制程序,旨在实现车辆能够自主沿着预设路径行驶,并在遇到障碍时采取避障策略。这种程序通常应用于机器人竞赛、自动清洁机器人或者教育领域的DIY...

    RF-YX-ZY-05-F05 销售代理服务供方甄选评分表(1).zip

    "RF-YX-ZY-05-F05 销售代理服务供方甄选评分表(1).zip" 文件提供了一个评估和选择销售代理的标准化工具。以下是基于该文件名和描述可能涉及的相关知识点: 1. **评分表**:评分表是一种评估工具,用于量化和系统化...

    RF-KF-ZY-02-F03 工程保修协议书(1).zip

    "RF-KF-ZY-02-F03 工程保修协议书(1).zip" 是一个包含工程保修协议书的压缩文件,它可能涉及到建筑、软件开发或者系统集成等领域的工程项目。在这样的文件中,通常会规定承包商对工程的质量保证、保修期限、责任范围...

    RF-CB-ZY-01-F01 目标成本测算表.zip

    "RF-CB-ZY-01-F01 目标成本测算表"很可能是一个用于计算和规划产品或服务预期成本的电子表格工具,如Excel文件"RF-CB-ZY-01-F01 目标成本测算表.xls"所示。 首先,目标成本是指企业为了实现特定利润目标,计划产品...

    托利多称重传感器产品选用指南

    该系列传感器具有高精度、良好的稳定性及宽广的量程范围等优点,满足了工厂对于准确配料的需求。 #### 六、结论 通过本文对托利多称重传感器各系列产品的介绍与分析可以看出,不同系列传感器各有侧重,在选择时需...

    ZY1730语音芯片说明书

    #### 六、独立(按键)操作模式 - **操作概述** - **录音操作**:按下特定按键启动录音,再次按下结束录音。 - **播放操作**:通过按键选择预设的语音片段并播放。 - **快进操作**:在播放过程中,通过按键实现...

    RF-YX-ZY-07 顾客要求及设计工程变更管理工作指引(1).zip

    《RF-YX-ZY-07 顾客要求及设计工程变更管理工作指引》是针对产品开发过程中,如何有效地处理顾客需求和设计变更的一项重要文档。在IT行业中,尤其是软件开发和工程设计领域,理解和管理顾客需求以及应对设计变更至关...

Global site tag (gtag.js) - Google Analytics