`
zy19982004
  • 浏览: 663756 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:252400
社区版块
存档分类
最新评论

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

阅读更多

一.概念

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

 

二.实例分析

 

     CPU

package com.zzy.abstractFactory;
/**
 * CPU接口
 * @author eason
 *
 */
public interface CPU {
	public void work();
}

 

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

package com.zzy.abstractFactory;
/**
 * 西数CPU
 * @author eason
 *
 */
public class WDCPU implements CPU{

	@Override
	public void work() {
		System.out.println("西数CPU is working...");
	}

}

 

     Disk

package com.zzy.abstractFactory;
/**
 * CPU接口
 * @author eason
 *
 */
public interface Disk {
	public void write();
}

 

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

package com.zzy.abstractFactory;

public class WDDisk implements Disk {

	@Override
	public void write() {
		System.out.println("西数硬盘 is working...");
	}

}

 

     AbstractFactory

package com.zzy.abstractFactory;
/**
 * 抽象工厂接口
 * @author eason
 *
 */
public interface AbstractFactory {
	public CPU createCPU();
	public Disk createDisk();
}
 

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

package com.zzy.abstractFactory;
/**
 * 三星工厂
 * @author eason
 *
 */
public class WDFactory implements AbstractFactory{

	@Override
	public CPU createCPU() {
		return new WDCPU();
	}

	@Override
	public Disk createDisk() {
		return new SamSungDisk();
	}
}

 

     TestAbstractFactory

package com.zzy.abstractFactory;
/**
 * 测试类
 * @author eason
 *
 */
public class TestAbstractFactory {
	public static void main(String[] args) {
		//三星工厂
		AbstractFactory factory = new WDFactory();
		//三星工厂生产的CPU
		CPU cpu = factory.createCPU();
		//三星工厂生产的硬盘
		Disk disk = factory.createDisk();
		cpu.work();
		disk.write();
	}
}
 

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

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

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

  • 从类的角度

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

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

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

 

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

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

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

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

分享到:
评论

相关推荐

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...

    肯德基:抽象工厂模式

    抽象工厂模式是软件工程中常用的一种创建型设计模式,它的核心思想是为创建一组相关或相互依赖的对象提供一个接口,而不需要指定它们具体的类。在Java中,抽象工厂模式被广泛应用,它有助于整合代码,提高系统的可...

    (超详细,超易懂)设计模式(三):抽象工厂模式,灵山派系谁上位

    抽象工厂模式由以下几个角色组成: 抽象工厂(AbstractFactory):定义了一组创建产品的抽象方法。 具体工厂(ConcreteFactory):实现了抽象工厂定义的抽象方法,用于创建具体产品的实例。 抽象产品...

    C#设计模式:抽象工厂实例解析.7z

    通过深入学习和理解抽象工厂模式,开发者可以更好地组织代码结构,提高代码的复用性和灵活性,同时降低系统之间的耦合度。在实际项目中,抽象工厂模式常常与其他设计模式如工厂方法、单例、依赖注入等结合使用,以...

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    IOS 设计模式抽象工厂实例Demo

    通过这个示例Demo,开发者可以学习如何在iOS项目中应用抽象工厂模式,提高代码的可扩展性和可维护性。这种模式不仅限于UI元素的创建,还可以应用于其他需要创建一系列相关对象的场景,如数据库连接、网络请求等。 ...

    C++ 设计模式:简单工厂、工厂方法、抽象工厂练习代码

    本主题聚焦于C++中的三个工厂模式:简单工厂、工厂方法和抽象工厂。这些模式都围绕着对象的创建过程,旨在提高代码的灵活性、可读性和可维护性。 1. **简单工厂模式**: - 简单工厂模式是一种静态工厂方法,它提供...

    设计模式抽象工厂实验报告

    1. **深入理解抽象工厂模式的基本概念和原理**:通过理论学习和实际操作,掌握抽象工厂模式的定义、组成以及工作原理。 2. **应用抽象工厂模式进行软件结构设计与实现**:通过具体案例(即开发一套界面皮肤库),...

    设计模式-抽象工厂模式

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定其具体的类。这种模式的关键在于“族”,即一系列相关的对象。在抽象工厂模式中,我们创建一个抽象工厂接口,然后为每一种具体...

    简单工厂模式、工厂模式、抽象工厂模式案例(C++实现)

    3. 抽象工厂模式: 抽象工厂模式是工厂方法模式的扩展,关注于创建相关或依赖对象的家族,而不必指定它们的具体类。在C++中,抽象工厂通常定义一个接口,包含多个用于创建相关产品对象的方法。具体的工厂类实现这个...

    抽象工厂模式+工厂方法模式+策略模式+类图实现手机加工厂

    本文将探讨三个重要的设计模式:抽象工厂模式、工厂方法模式以及策略模式,并结合一个实际的场景——手机加工厂,来具体阐述它们的应用。 首先,我们来看**抽象工厂模式**。这个模式主要用于创建相关或依赖对象的...

    Java 工厂模式 抽象工厂 工厂方法模式

    **抽象工厂模式**:抽象工厂模式是工厂模式的一种扩展,关注于创建相关或依赖对象的家族,而无需指定它们的具体类。它提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在Java中,抽象工厂模式...

    JAVA设计模式之抽象工厂模式

    在Java中,我们可以通过以下步骤实现抽象工厂模式: 1. **定义抽象产品接口**:例如,我们可以定义两个相关的抽象产品,如`Computer`和`OperatingSystem`,它们各自有对应的实现类,如`MacComputer`、`Windows...

    从哲学角度学习设计模式-抽象工厂

    总的来说,"从哲学角度学习设计模式-抽象工厂"这个主题旨在将哲学思考融入到软件设计中,通过抽象工厂模式,我们不仅可以理解如何构建灵活、可扩展的系统,还能体会到哲学思想如何影响并指导我们的编程实践。...

    设计模式(简单工厂,工厂,抽象工厂)简单例子.rar

    本篇文章将深入探讨三种创建型设计模式:简单工厂模式、工厂方法模式和抽象工厂模式,通过生动的比喻以及实际应用的例子,揭示它们各自的特点和应用场景。 首先,我们从简单工厂模式开始。简单工厂模式是一种创建型...

    工厂方法模式和抽象工厂模式

    在软件设计模式中,工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)是两种常用的创建型设计模式,它们都属于“工厂”家族,但有着不同的应用场景和目标。 工厂方法模式的核心...

    PHP5设计模式-抽象工厂模式实现

    PHP实现的抽象工厂模式,大家可以下载来参考学习下。

    Android抽象工厂模式demo

    抽象工厂模式是设计模式中的一种结构型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在Android开发中,这种模式尤其有用,因为Android平台有多种设备,每种设备可能有不同的UI...

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

    抽象工厂模式是一种重要的软件设计模式,它属于创建型模式,主要解决的是当系统需要创建一系列相关或相互依赖的对象时,而这些对象的类在运行时可能不确定的问题。在这个模式中,我们通过一个抽象工厂接口来定义创建...

    抽象工厂模式 设计模式中创建型之抽象工厂模式

    抽象工厂模式是软件设计模式中的一种创建型模式,它的主要思想是提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。在实际应用中,它常用于跨平台开发,或者当系统需要根据不同的条件创建...

Global site tag (gtag.js) - Google Analytics