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

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

阅读更多

最近发现好懒,奥运前就打算写的BLOG,拖到奥运后才写,咳...放假3天什么都没干,整天无所事事....

 

 

 

工厂方法模式是简单工厂模式(静态工厂模式)的一种推广,他保持了简单工厂模式的优点,并在上面有了一些提升

 

在工厂方法模式中,核心工厂不再负责所有实例的创建,而改为了由他的子类进行创建工作.核心工厂类变为了抽象的角色.

 

 

工厂方法模式的系统涉及到了以下角色:

 

    抽象工厂角色:与应用程序无关,任何在模式中创建对象的工厂必须实现这个接口。


    具体工厂角色:实现了抽象工厂接口的具体Java类,含有与引用密切相关的逻辑,并且受到应用程序的调用以创建产品

 

                        对象。


    抽象产品角色:工厂方法所创建产品对象的超类型,也就是产品对象的共同父类或共同拥有的接口。


    具体产品角色:这个角色实现了抽象产品角色所声名的接口。工厂方法所创建的每个具体产品对象都是某个具体产品角

 

                         色的实例。

 

 

可以看下面的图片(从原来那个高手blog中截出来的)

 

 

上面这个图中,抽象工厂角色就是水果工厂接口,

 

                   具体工厂角色就是底下的苹果工厂等,

 

                   抽象产品角色就是水果产品接口,

 

                   具体产品角色就是具体的产品.

 

 

工厂方法模式和简单工厂相比,工厂方法模式把核心工厂类抽象出来,也就和前面简单工厂方法中,水果产品接口是同级

 

 

 

抽象工厂方法

 

按照我理解我看那篇文章的说明,涉及到一个产品族和产品等级的概念

 

 

举个例子吧

 

上面的水果中的苹果,草莓,葡萄就属于一个等级的东西,如果工厂需要扩建,生产的苹果按地方分成,北方苹果,南方苹果,这就

 

是一个产品族,他属于同一个工厂下的不同产品,也许我的举例不是很清楚

 

看别人举的例子

 

 

 

他从一个抽象工厂中生成了2个子类工厂,一个热带工厂,一个亚热带工厂, 2个工厂都可以生产水果和蔬菜,但是热带工厂只能

 

生产热带水果和蔬菜,亚热带水果只能身长亚热带的水果和蔬菜,水果继承了水果的抽象类,蔬菜继承了蔬菜的抽象类

 

与工厂方法模式不同的是

 

工厂方法采用的是类继承机制(生成一个子类,重写该工厂方法,在该方法中生产一个对象)。

 

抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品对象.

 

 

 

 

 

不理解可以看

http://lavasoft.blog.51cto.com/62575/11674

 

 

分享到:
评论

相关推荐

    工厂方法模式和抽象工厂模式的区别

    工厂方法模式和抽象工厂模式是两种常见的设计模式,它们都属于创建型模式,用于解决对象的创建问题。在软件设计中,这两种模式都是用来隔离对象的创建和使用,以提高系统的灵活性和可扩展性。 首先,工厂方法模式的...

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

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

    java工厂方法模式和抽象工厂模式实例

    根据描述,我们将深入探讨Java中的两种工厂模式:工厂方法模式和抽象工厂模式,并通过实例来理解它们的工作原理。 首先,我们来看**工厂方法模式**。这种模式定义了一个用于创建对象的接口,但让子类决定实例化哪一...

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

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

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

    在软件设计模式中,工厂方法模式和抽象工厂模式是两种常用的创建型模式,它们都用于对象的创建,但各有特点和适用场景。本篇将详细阐述这两种模式的概念、结构、工作原理以及它们的区别。 首先,我们来看工厂方法...

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

    **抽象工厂模式** 是工厂方法模式的进一步抽象和推广,它关注的是整个一族相关或相互依赖的对象。抽象工厂提供了一组接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。这个模式适用于当系统需要...

    C#编程模式之工厂方法模式+抽象工厂模式

    本资源主要介绍工厂方法模式和抽象工厂模式。二者都与工厂相关,,但是其本质又大相径庭。这里先来简单介绍下二者的区别,以免混淆。 抽象工厂模式:提供一个接口,用于创建一系列相关的对象,而无需指定具体的类。...

    Java工厂模式:简单工厂、工厂方法模式、抽象工厂模式代码示例

    在Java中,工厂模式分为三种:简单工厂、工厂方法模式和抽象工厂模式。 **简单工厂模式** 是最基本的工厂模式,它由一个工厂类根据传入的参数决定创建哪一种产品类的实例。简单工厂容易实现,但违反开闭原则,即...

    深入了解工厂模式&工厂方法&抽象工厂

    工厂模式分为三种主要形态:简单工厂模式、工厂方法模式和抽象工厂模式。 1. 简单工厂模式:也称为静态工厂方法模式,它通过一个静态方法来创建对象。在这个例子中,`FruitGardener` 类就是简单工厂,它根据输入的...

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

    在软件设计模式中,工厂方法模式和抽象工厂模式是两种常用的创建型模式,它们都用于对象的创建,但各有特点和适用场景。首先,我们来理解这两种模式的基本概念。 **简单工厂模式**: 简单工厂模式是一种较为初级的...

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

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

    Java设计模式编程中的工厂方法模式和抽象工厂模式

    在Java设计模式编程中,工厂方法模式和抽象工厂模式是两种重要的创建型设计模式,它们主要解决了对象创建过程中的灵活性和可扩展性问题。 工厂方法模式的核心思想是将对象的实例化过程延迟到子类中进行,从而实现对...

    模式编程之- 简单工厂模式,工厂方式模式、抽象工厂模式

    简单工厂模式、工厂方法模式和抽象工厂模式是设计模式中三种常见的工厂模式,它们都是用于对象创建的,目的是为了将对象的创建过程封装起来,从而提高代码的灵活性和可维护性。 **简单工厂模式** 是最基础的工厂...

    简单工厂模式与工厂模式和抽象工厂模式.rar

    在软件设计模式中,工厂模式是一组非常基础且重要的设计思想,它们主要用来解决对象...在“简单工厂模式与工厂模式和抽象工厂模式.pdf”文件中,应该会有详细的理论介绍和案例解析,帮助读者更好地理解和应用这些模式。

    c# 工厂模式 抽象工厂模式

    在C#中,工厂模式可以分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。每一种模式都有其特定的应用场景和优势,旨在解决类的实例化过程中的灵活性和可扩展性问题。 1. **简单工厂模式(Simple ...

    [原创][创建型模式] 简单工厂、工厂方法、抽象工厂三种设计模式的理解

    NULL 博文链接:https://jacky-dai.iteye.com/blog/2296369

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

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

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

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

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

    本文将深入探讨Java中的工厂模式,包括基本的工厂模式、抽象工厂模式以及工厂方法模式。 **工厂模式**:工厂模式的核心思想是提供一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。这样,客户端无需...

Global site tag (gtag.js) - Google Analytics