首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

工厂模式——抽象工厂模式(+反射

这里又出现了一个抽象工厂模式,这个抽象工厂模式又是什么呢? 我们现在来模拟一个场景,现在用的是Mysql数据库,明天让你更换为Oracle数据库。此时,想想要做多少的改动。...上面我们实际上重新回顾了工厂方法模式,似乎已经达到了我们想要的效果。但是,数据库里不止一张表,两个数据库又是两大不同分类,解决这种涉及多个产品系列的问题,有一个专门的工厂模式叫抽象工厂模式。...所以实际上,如果增加一个新表,上面的工厂方法模式就有了一个新的名字——抽象工厂模式。 抽象工厂模式:提供一个创建一些列有关或互相依赖对象的接口,而无需制定它们具体的类。...下面我们进阶一下:用反射+抽象工厂的方式来设计这个程序。 是否记得在简单工厂模式中,我们用到了switch或者if。...System.out.println(obj instanceof MysqlUser); 输出为true,用反射机制成功实例化对象。 反射和直接new有什么区别呢?

1K101
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    工厂模式之抽象工厂

    工厂模式之抽象工厂 是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。类继承自抽象工厂,即可生产指定对象。新增实体的时候无需修改已有代码。...比如食物这个工厂,在现实世界中,它可以生产面包、鸡蛋、肉等,在魔法世界中,食物工厂可以生产魔法豆、会唱歌的火鸡、HP口服液等,我们把食物比作是最大的一个抽象工厂,现实世界(ModernFactory)抽象工厂和魔法世界...(MagicFactory)抽象工厂继承自最大的食物抽象工厂,然而bread面包、egg鸡蛋、meat肉类都继承自ModernFactory抽象工厂、MagicBeans魔法豆等继承自MagicFactory...,一步步化抽象为具体,抽象工厂实际最大的好处就是实现了代码的解耦。...Liutx * @date 2020/12/8 22:18 * @Description */ public abstract class Abstractory { /** * 抽象工厂可以生产食物

    28530

    抽象工厂模式

    抽象工厂模式 抽象工厂模式Abstract Factory是通过对类的工厂抽象使其业务用于对产品类簇的创建,而不仅仅是负责创建某一类产品的实例,抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类...,抽象工厂模式又称为Kit模式,属于对象创建型模式。...抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建 。...当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、有效率。 模式结构 AbstractFactory: 抽象工厂。...缺点 在添加新的产品对象时,难以扩展抽象工厂来生产新种类的产品,这是因为在抽象工厂角色中规定了所有可能被创建的产品集合,要支持新种类的产品就意味着要对该接口进行扩展,而这将涉及到对抽象工厂角色及其所有子类的修改

    20610

    抽象工厂模式

    address = materialFactory.selectAddress(); 25 } 26 //可以重写父类方法,进行特殊处理 27} 新加坡苹果口味的面包,实现抽象方法...address = materialFactory.selectAddress(); 25 } 26 //可以重写父类方法,进行特殊处理 27} 新加坡奶油口味的面包,实现抽象方法...chinaBreadStoreFactory.orderBread("apple"); 17 } 18} 测试结果 1中国顾客买苹果味道面包 2创建中国苹果口味面包 3材料耗尽 4中国材料源_拿到材料 5搅拌 6搓圆 7加工 8烘烤 阿三:这里我使用了抽象工厂模式...项目组长阿飞:是的,抽象工厂经常以工厂方法的方式实现,抽象工厂的任务是定义一个负责创建一组产品的接口(材料提供点),接口内的每个方法都负责创建一个具体的产品(比如创建地址)。...然后利用实现抽象工厂的子类来提供这些具体的做法

    43850

    抽象工厂模式

    本节要介绍的抽象工厂模式将考虑多等级产品的生产,将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族, 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂...该超级工厂又称为其他工厂工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。...优缺点 产品易扩展(例如后面案例中扩展新的Mq、数据库、缓存) 产品族扩展非常困难(例如后面案例中新增Server产品族),要增加一个系列的某一产品,既要在抽象工厂里加代码,又要在具体的工厂类里面加代码...AbstractSystemFac作为抽象工厂类,调用了上述的三个接口,来组装三个不同的产品。.../** * 抽象工厂类 */ public abstract class AbstractSystemFac { public abstract MyCache useCache();

    34130

    抽象工厂模式

    这就是抽象工厂模式的缺点了。 综上所述,结合其他情况,以下情况可以使用抽象工厂模式: 1、一个系统不应当依赖于产品实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是重要的。...关于抽象工厂模式的起源,是用于创建分属于不同操作系统的视窗构建。...角色 抽象工厂角色(Abstract Factory):具体工厂(产品族)公共接口 具体工厂角色(Concrete Factory):产品族 抽象产品角色(Abstract Product):产品等级结构...总结 抽象工厂模式在工厂方法模式的基础上,增添了产品族和产品等级结构的概念,以及只使用同一个产品族中的约束,使得抽象工厂模式符合现实生活中的某些场景,成为实用的设计模式,再加上抽象工厂模式实现高内聚低耦合...参考: 《JAVA与模式》之抽象工厂模式 2018年8月25日18:31:58

    26920

    抽象工厂模式

    简介 抽象工厂模式 (Abstract Factory)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 抽象工厂模式是一种类创建型模式 (可参考 设计模式 创建型模式)。...图-抽象工厂模式结构图 抽象工厂模式包含以下角色: AbstractFactory(抽象工厂) ConcreteFactory(具体工厂) AbstractProduct(抽象产品) ConcreteProduct...所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需要改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。...另外,应用抽象工厂模式可以实现高内聚低耦合的设计目的,因此抽象工厂模式得到了广泛的应用。 (2)当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。...缺点 在添加新的产品对象时,难以扩展抽象工厂来生产新种类的产品,这是因为在抽象工厂角色中规定了所有可能被创建的产品集合,要支持新种类的产品就意味着要对该接口进行扩展,而这将涉及到对抽象工厂角色及其所有子类的修改

    56460

    抽象工厂模式

    抽象工厂模式 抽象工厂模式Abstract Factory是通过对类的工厂抽象使其业务用于对产品类簇的创建,而不仅仅是负责创建某一类产品的实例,抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类...,抽象工厂模式又称为Kit模式,属于对象创建型模式。...抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建 。...当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、有效率。 模式结构 * AbstractFactory: 抽象工厂。...缺点 * 在添加新的产品对象时,难以扩展抽象工厂来生产新种类的产品,这是因为在抽象工厂角色中规定了所有可能被创建的产品集合,要支持新种类的产品就意味着要对该接口进行扩展,而这将涉及到对抽象工厂角色及其所有子类的修改

    39320

    抽象工厂模式

    抽象工厂模式概述 2. 抽象工厂模式的结构与实现 3. 抽象工厂模式的应用实例 4. 抽象工厂模式的应用实例 5. 开闭原则的倾斜性 6....抽象工厂模式概述 模式动机 当系统所提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构、属于不同类型的具体产品时就可以使用抽象工厂模式。...抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形式。 抽象工厂模式的定义 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。...抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。 当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、更有效率。...抽象工厂模式的结构 抽象工厂模式包含以下4个角色: AbstractFactory(抽象工厂) ConcreteFactory(具体工厂) AbstractProduct(抽象产品) ConcreteProduct

    43940

    抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂工厂。这种类型的设计模式属于创建型模式, 它提供了一种创建对象的最佳方式。...在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 上图: ?...其实这个对比了之前的简单工厂模式,无非就是多了一个抽象类让我们可以选择的去找到对应的简单工厂类。 优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。...缺点:产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。

    39310

    抽象工厂设计模式例题_什么是抽象工厂模式

    类型:创建类模式 类图: 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。...他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。...在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。...在抽象工厂模式中,有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。...明白了等级结构和产品族的概念,就理解工厂方法模式和抽象工厂模式的区别了,如果工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。

    41130

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

    工厂模式分三类: 简单工厂 工厂方法 抽象工厂 简单工厂不属于设计模式,因为其违背了设计模式的开闭原则,后面会有介绍。 工厂方法 ?...factory_function.png 相关元素: 抽象工厂 具体工厂 抽象产品 具体产品 示例 抽象产品 class Car { public: virtual void printInfo...简单工厂 ? factory_simple.png 这是工厂模式的简单实现方式,包含元素 工厂抽象产品 抽象方法 示例 这里抽象产品和抽象方法和前面一样。...比如:当需要生产法拉利时,我们需要修改工厂类的方法。这不符合开闭原则,所以它不属于设计模式。只是工厂模式的一个变相简单的实现。 抽象工厂 前面说到工厂方法只能生产一个类型的产品。...当我们需要生产一系列的产品,比如:我们需要奥迪的发动机,那么肯定也是在奥迪的工厂生产,那么这里就可以使用抽象工厂设计模式 元素 抽象工厂 具体工厂 抽象产品(多个) 具体产品 示例 这里我们再Car的基础上在增加一个产品

    49010

    抽象工厂模式与工厂方法模式有哪些不同_工厂方法和抽象工厂

    command = command->ExecuteReader(); while(reader->Read()){ } } } 抽象工厂...class SqlCommand : public IDBCommand{ } class SqlDataReader : public IDataReader{ } //sql工厂...OracleCommand : public IDBCommand{ } class OracleDataReader : public IDataReader{ } //Oracle工厂...结构 要点总结 如果没有应对”多系列对象构建“的需求变换,则没有必要使用Abstract Factory模式 这时候使用简单的工厂完全可以、 ”系列对象“指的是在某一特定系列下的对象之间有相互依赖或作用的关系...其缺点在于难以应对”新对象“的需求变动 笔记 抽象工厂就是在工厂模式的基础上创建多个对象 抽象工厂就是创建很多个对象 对象之间是一组一组的关系 不能这个对象用这个组里的 那个对象又用另外一个组里的 设计模式是解决稳定中有变换

    31530
    领券