`
lvwenwen
  • 浏览: 958828 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

工厂模式,简单工厂模式,抽象工厂模式三者有什么区别

阅读更多

 

文章链接:
http://blog.csdn.net/superbeck/article/details/4446177
工厂方法与抽象工厂的区别: 工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 简单工厂模式: 区别: 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。 区别: 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。 模板方法模式 我们大多数情况下,都是使用抽象工厂和简单工厂。简单工厂用来创建工厂,抽象工厂创建产品。 工厂的作用,就是创建接口。 无论是简单工厂模式、工厂模式还是抽象工厂模式,它们本质上都是将不变的部分提取出来,将可变的部分留作接口,以达到最大程度上的复用 => 简单工厂角色:核心,封装商业逻辑,通常由一个具体Java类实现 => 抽象产品角色:简单工厂模式创建的对象的父类或者共同的接口,通常由一个Java抽象类或者Java接口实现 => 具体产品角色:简单工厂模式创建的对象是该类的实例,通常由一个具体Java类实现 => 优点: 1. 模式核心是工厂类,该类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类实例. 2. 客户端避免了直接创建产品对象的责任,仅仅负责消费产品.实现责任分割. => 缺点: 1. 工厂类为上帝类(God Class),一旦它受影响了,涉及整个系统正常运作 2. 工厂类中集中了过多的逻辑,难以维护及扩展 3. 新的产品类加入系统时,工厂角色需要做相应修改,不支持"开-闭"原则 => 应用: DateFormat.getInstance() -> 返回其子类实例对象,如SimpleDateFormat 简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。 本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。 简单工厂 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。 不修改代码的话,是无法扩展的。 工厂方法 工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。 在同一等级结构中,支持增加任意产品。 抽象工厂 抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。 应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。 小结 ★工厂模式中,重要的是工厂类,而不是产品类。产品类可以是多种形式,多层继承或者是单个类都是可以的。但要明确的,工厂模式的接口只会返回一种类型的实例,这是在设计产品类的时候需要注意的,最好是有父类或者共同实现的接口。 ★使用工厂模式,返回的实例一定是工厂创建的,而不是从其他对象中获取的。 ★工厂模式返回的实例可以不是新创建的,返回由工厂创建好的实例也是可以的。 区别 简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力) 工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品) 抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族) 以上三种工厂 方法在等级结构和产品族这两个方向上的支持程度不同。所以要根据情况考虑应该使用哪种方法。
分享到:
评论

相关推荐

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

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

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

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

    三种设计模式(简单工厂_工厂方法_抽象工厂)

    ### 三者之间的区别与联系 1. **简单工厂**:适用于产品种类较少,且创建逻辑较为简单的场景。但它不支持多态扩展,对产品类的增加敏感。 2. **工厂方法**:比简单工厂更灵活,支持多态,易于扩展。适用于产品种类...

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

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

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

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

    概括设计模式,举例详解抽象工厂模式

    例如,在一个图形界面库中,可能有Windows风格和Mac风格的按钮、文本框等组件,抽象工厂模式可以让我们根据不同的操作系统创建相应风格的界面组件,而无需修改客户端代码。 ##### 生成器模式(Builder) 生成器...

    抽象工厂模式在net多层分布式程序中的应用.pdf

    ### 抽象工厂模式在.NET多层分布式程序中的应用 #### 概述 本文探讨了抽象工厂模式在.NET多层分布式程序设计中的应用,并详细分析了其如何解决代码复用和系统可扩展性等问题。首先介绍了抽象工厂模式的概念及其...

    设计模式-工厂模式 Java源码

    在Java编程语言中,工厂模式通常分为简单工厂模式、工厂方法模式和抽象工厂模式三种类型。这些模式都是围绕着一个中心思想:将对象的实例化过程封装起来,使代码更加灵活且易于维护。 1. **简单工厂模式**: 简单...

    DesignPattern(VS2019_观察者模式_工厂模式_抽象工厂模式)完整示例源代码.zip

    3. **抽象工厂模式(Abstract Factory Pattern)**:提供了创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在C++中,抽象工厂通常包含一组创建不同产品族的工厂方法,每个产品族都有一个具体的工厂类...

    设计模式-工厂模式

    工厂模式主要有三种形式:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式**: 简单工厂模式通常由一个静态工厂类来负责创建对象,这个静态工厂类根据传入的参数或条件来决定创建哪种类型的实例。...

    C#简单工厂模式女娲造人

    为了解决这个问题,可以考虑使用更灵活的工厂方法模式或抽象工厂模式。 总结来说,"C#简单工厂模式女娲造人"是一个生动的教学比喻,旨在帮助初学者理解和应用简单工厂模式。在C#编程中,简单工厂模式提供了统一的...

    工厂模式-设计模式

    3. **抽象工厂模式**:提供了创建相关或依赖对象的家族,而无需指定它们的具体类。它主要用于处理具有多个维度的产品族。 描述中的“设计模式混用”可能意味着这个示例不仅仅展示了工厂模式,还可能涉及其他设计...

    设计模式_工厂模式

    工厂模式的实现方式有多种,包括简单工厂模式、工厂方法模式和抽象工厂模式。在简单工厂模式中,工厂类通常是静态的,直接创建并返回具体产品;工厂方法模式则将产品创建的逻辑交给子类,允许更灵活的扩展;抽象工厂...

    工厂模式实现(比较简单,适合初学者)

    在工厂模式中,主要有三个角色: 1. 抽象产品(Product):这是所有创建对象的公共接口或基类,定义了所有创建对象的共同属性和行为。 2. 具体产品(Concrete Product):抽象产品的具体实现,是工厂方法要创建的...

    Java常用的3中设计模式代码即工厂模式、单例模式、观察者模式demo

    今天我们将聚焦于其中的三种:工厂模式、单例模式和观察者模式。 **1. 工厂模式** 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,工厂对象负责...

    简单工厂模式

    2. **灵活性**:如果产品之间的关系比较复杂,或者产品类需要传递一些初始化参数,简单工厂模式可能无法满足需求,这时可以考虑使用其他更复杂的创建型设计模式,如工厂方法模式、抽象工厂模式等。 3. **违反了单一...

    工厂模式实例

    根据具体实现的不同,工厂模式可以分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式**: 简单工厂模式是最简单的工厂模式形式,由一个静态工厂类负责创建对象,这个工厂类通常会...

    三层架够EntityFramework应用于DAL层 + 抽象工厂模式

    总的来说,这个项目应用了三层架构来分离关注点,使用Entity Framework作为数据访问的工具,通过抽象工厂模式来灵活地切换不同的数据库提供者。这种设计提高了代码的可维护性和扩展性,使得系统更加健壮。在实际开发...

    .NET抽象工厂设计模式 AbstractFactory

    在典型的三层架构项目中,这个抽象工厂模式的应用可能体现在以下几个方面: 1. **依赖注入**:通过依赖注入容器(如Unity、Autofac等),在应用程序启动时根据配置选择合适的数据库工厂实例,并注入到数据访问层...

Global site tag (gtag.js) - Google Analytics