`
wjheye
  • 浏览: 83947 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

简单理解抽象工厂模式

阅读更多
定义:

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态,,当有多个抽象角色时,使用的一种工厂模式,它向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。

注意:
       注意产品族的概念:

       是指位于不同产品等级结构中,功能相关联的产品组成的家族。一般是位于不同的等级结构中的相同位置上。显然,每一个产品族中含有产品的数目,与产品等级结构的数目是相等的,形成一个二维的坐标系,水平坐标是产品等级结构,纵坐标是产品族。叫做相图。
详细参考:

       http://baike.baidu.com/view/1580269.htm?fr=ala0_1
示例:某人喜欢做什么

注意看这“某人喜欢”与“做什么”,这可以理解为两个产品族,他们在逻辑上存在一定的关系,但又是绝对的相互独立,以下我们以“奶奶喜欢种苹果”、“爷爷喜欢种香蕉”的示例来说明。

示例中有两个产品族,那我们首先得为这两个产品族建立相应的工厂,

某人喜欢

public interface FamilyPerson {

    public void like();

}


种什么(以水果为例)

public interface Fruit {

    public void plant();

}


好了,以上就定义了“某人喜欢”与“种什么”两个工厂了,后面再来分别定义他们的实现类,首先定义“某人”的爷爷、奶奶实现类:

爷爷:
public class GrandePa implements FamilyPerson {

    public void like() {

       System.out.println("Grandpa likes ");

    }

}


奶奶:

public class GrandeMa implements FamilyPerson {

    public void like() {

       System.out.println("Grandma likes ");

    }

}


再定义“种什么”的苹果、香蕉实现类:

苹果:

public class Apple implements Fruit {

    public void plant() {

       System.out.println("Plant Apple.");

    }

}


香蕉:

public class Banana implements Fruit {

    public void plant() {

       System.out.println("Plant Banana");

    }

}


好了,基础的工厂都有了,现在需要一个抽象工厂了,呵,就是同时引用多个基础工厂的工厂,定下“爱好”工厂如下:

public interface Hobby {

    public Fruit getFruit();

    public FamilyPerson getFamilyPerson();

}


实现爷爷喜欢种香蕉:

public class GrandePaHobby implements Hobby {

    public FamilyPerson getFamilyPerson() {

       return new GrandePa();

    }

    public Fruit getFruit() {

       return new Banana();

    }

}


实现奶奶喜欢种苹果:

public class GrandeMaHobby implements Hobby {

    public FamilyPerson getFamilyPerson() {

       return new GrandeMa();

    }

    public Fruit getFruit() {

       return new Apple();

    }

}


一切OK,来个调用实例:

public class Test1 {

    public static void main(String[] args) {

       Hobby hobby = new GrandeMaHobby();

       hobby.getFamilyPerson().like();

       hobby.getFruit().plant();

    }

}


输出:

Grandma likes 

Plant Apple.



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2010/04/20/5506794.aspx
分享到:
评论

相关推荐

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

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

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

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

    抽象工厂模式+反射技术(抽象工厂模式+简单工厂模式)

    在某些情况下,我们可以将简单工厂作为抽象工厂的一个实现,或者在系统初期使用简单工厂,随着系统复杂性的增加逐步过渡到抽象工厂模式。 至于“仅仅是抽象工厂模式”,这意味着设计完全围绕着抽象工厂模式进行,...

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

    在这个压缩包中,包含了三种工厂模式的C++实现:简单工厂模式、工厂方法模式以及抽象工厂模式。让我们一一探讨这些模式。 1. 简单工厂模式: 简单工厂模式是一种静态工厂方法,它提供一个公共的工厂类来创建对象。...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...

    c#工厂模式——简单工厂,抽象工厂,单件模式实例

    抽象工厂模式则更进一步,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在多线程或者跨平台的C#应用中,抽象工厂可以帮助我们隔离产品族,使得更换产品族变得容易。例如,我们可以有...

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

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

    简单工厂-工厂方法-抽象工厂 对比总结

    简单工厂模式适用于快速原型开发或小型项目,而工厂方法和抽象工厂模式则更适合大型项目或需要高度灵活性的系统。理解并熟练运用这些设计模式,能够提高代码的可维护性和可扩展性,也是成为一名专业IT从业者必备的...

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

    首先,我们来理解一下抽象工厂模式的主要组成: 1. **抽象工厂(Abstract Factory)**:这是模式的核心,它是一个接口或者抽象类,定义了创建一组相关或相互依赖对象的接口,而不必指定它们的具体类。在Java中,这...

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

    本文将深入探讨三种工厂模式:简单工厂模式、工厂方法模式以及抽象工厂模式,并结合源码分析其应用场景和优缺点。 1. 简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的...

    Android抽象工厂模式demo

    抽象工厂模式是设计模式中的一种结构型模式...通过学习这个"Android抽象工厂模式demo",开发者可以更好地理解如何在Android应用中应用抽象工厂模式,提高代码的灵活性和可维护性,同时降低由于设备多样性带来的复杂性。

    抽象工厂设计模式简单实例

    首先,我们需要理解抽象工厂模式的核心组成部分: 1. 抽象工厂(Abstract Factory):这是模式的中心接口,定义了一系列用于创建产品对象的方法。它并不直接创建产品,而是提供一个创建产品的接口。 2. 具体工厂...

    简单工厂模式,工厂方法模式,抽象工厂模式和Proxy模式

    从简单工厂,到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下...

    .NET 抽象工厂模式Demo

    在描述中提到的".NET 抽象工厂模式Demo"应该是一个简单的示例,用于演示如何在.NET环境中应用抽象工厂模式。这个示例可能包括以下部分: 1. **抽象工厂接口**:定义了创建一系列相关对象的方法,例如创建产品A和...

    简单工厂模式和抽象工厂模式

    "简单工厂模式"和"抽象工厂模式"是两种非常重要的创建型设计模式,它们在对象创建过程中扮演着关键角色。 首先,我们来看简单工厂模式(Simple Factory Pattern)。它是一个类的工厂,负责创建对象,客户通过调用...

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

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体类。...通过阅读和分析提供的源码,可以更深入地理解抽象工厂模式的工作原理及其在实际项目中的应用。

    抽象工厂模式简洁介绍附带net简单用例代码如果你还不理解是老天爷的错

    通过这个示例,你可以更深入地理解抽象工厂模式如何在.NET环境中工作,并能根据需求创建和替换不同环境下的产品实例。通过实践这个模式,你可以提高代码的灵活性和可维护性,同时减少代码之间的耦合。

    简单工厂和抽象工厂的Demo

    抽象工厂模式通过定义多个工厂接口,每个接口对应一类产品,然后由具体的工厂类实现这些接口,以创建对应的实例。这样,客户端可以通过选择不同的工厂来获取不同系列的产品,而不需要知道具体的产品实现细节。这种...

    C#简单登录演示抽象工厂设计模式

    首先,让我们理解抽象工厂模式的基本概念。在该模式中,我们定义一个创建对象的接口,但让子类决定实例化哪一个类。抽象工厂方法让类的实例化推迟到子类。在C#中,我们可以用接口(Interface)来定义抽象工厂,然后...

Global site tag (gtag.js) - Google Analytics