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

工厂模式:如何从客户端访问具体产品类的属性?

工厂模式是一种创建对象的设计模式,它通过定义一个创建对象的接口,但将具体的对象创建工作延迟到子类中进行。工厂模式可以隐藏对象的创建细节,使客户端代码与具体产品类解耦,提高代码的可维护性和扩展性。

在工厂模式中,客户端通过调用工厂类的方法来创建对象,而不是直接调用具体产品类的构造函数。工厂类根据客户端的请求,选择合适的具体产品类进行实例化,并返回给客户端使用。

要从客户端访问具体产品类的属性,可以通过以下步骤进行:

  1. 定义产品接口:创建一个产品接口,包含具体产品类应该实现的方法。
  2. 创建具体产品类:实现产品接口的具体产品类,每个具体产品类都有自己特定的属性和方法。
  3. 创建工厂类:工厂类负责根据客户端的请求创建具体产品类的实例。工厂类通常包含一个用于判断客户端请求的方法,根据不同的请求返回相应的具体产品类实例。
  4. 客户端调用:客户端通过调用工厂类的方法来创建具体产品类的实例。客户端可以通过返回的实例对象访问具体产品类的属性和方法。

以下是一个示例代码:

代码语言:txt
复制
// 产品接口
interface Product {
    void doSomething();
}

// 具体产品类A
class ConcreteProductA implements Product {
    private String propertyA;

    public ConcreteProductA(String propertyA) {
        this.propertyA = propertyA;
    }

    public void doSomething() {
        System.out.println("ConcreteProductA: " + propertyA);
    }
}

// 具体产品类B
class ConcreteProductB implements Product {
    private int propertyB;

    public ConcreteProductB(int propertyB) {
        this.propertyB = propertyB;
    }

    public void doSomething() {
        System.out.println("ConcreteProductB: " + propertyB);
    }
}

// 工厂类
class Factory {
    public Product createProduct(String type) {
        if (type.equals("A")) {
            return new ConcreteProductA("Property A");
        } else if (type.equals("B")) {
            return new ConcreteProductB(123);
        }
        return null;
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Factory factory = new Factory();
        Product productA = factory.createProduct("A");
        Product productB = factory.createProduct("B");

        productA.doSomething();  // 输出:ConcreteProductA: Property A
        productB.doSomething();  // 输出:ConcreteProductB: 123
    }
}

在这个示例中,客户端通过调用工厂类的createProduct方法来创建具体产品类的实例。工厂类根据客户端传入的参数,选择合适的具体产品类进行实例化,并返回给客户端。客户端可以通过返回的实例对象访问具体产品类的属性和方法。

腾讯云相关产品和产品介绍链接地址:

  • 云函数(Serverless):腾讯云的无服务器计算服务,可用于创建和运行无需管理服务器的应用程序。
  • 容器服务(TKE):腾讯云的容器管理服务,可帮助用户轻松部署、管理和扩展容器化应用。
  • 云数据库 MySQL:腾讯云的关系型数据库服务,提供高性能、可扩展的 MySQL 数据库。
  • 云服务器(CVM):腾讯云的弹性云服务器,提供可靠、安全的计算能力,适用于各种应用场景。
  • 人工智能平台:腾讯云的人工智能服务平台,提供丰富的 AI 能力和工具,帮助开发者构建智能化应用。
  • 物联网开发平台:腾讯云的物联网开发平台,提供全面的物联网解决方案,帮助用户快速构建物联网应用。
  • 移动推送(信鸽):腾讯云的移动推送服务,提供高效、稳定的消息推送能力,帮助开发者实现消息通知功能。
  • 对象存储(COS):腾讯云的对象存储服务,提供安全、稳定、低成本的云端存储能力,适用于各种数据存储需求。
  • 区块链服务(BCS):腾讯云的区块链服务,提供一站式区块链解决方案,帮助用户快速搭建和管理区块链网络。
  • 腾讯会议:腾讯云的在线会议平台,提供高清、稳定的音视频通信能力,支持多人会议和屏幕共享等功能。

请注意,以上仅为示例产品,实际应根据具体需求选择适合的腾讯云产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

抽象工厂模式 一、定义: ● 为创建一组相关或依赖对象提供一个接口,而无需指定他们具体类型。是工厂方法模式升级版。...; ● 步骤4: 创建具体品类(继承抽象产品类) & 定义生产具体产品; ● 步骤5: 创建具体工厂类(继承抽象工厂类),定义创建对应具体产品实例方法; ● 步骤6: 客户端通过实例化具体工厂类...; void talk(); void getSex(); } 步骤3: 创建抽象产品类 (继承抽象产品族类),定义具体产品公共接口 // 负责人种公共属性定义。...只需知道工厂是谁,就能创建一个对象。 ● 2.更符合开闭原则:新增一个产品类时,只需增加相应具体品类和抽象工厂子类即可。 ● 3.更符合单一原则:每个具体工厂类只负责创建相应产品。...注:虽然抽象工厂模式扩展产品族困难,但是扩展产品类别比较容易,

28110

设计模式-工厂方法模式(一)

工厂方法模式是一种常见创建型设计模式,它通过定义一个工厂接口和多个具体工厂类来创建不同类型对象,将对象创建过程与客户端解耦,提高了系统灵活性和可扩展性。...概念工厂方法模式定义了一个工厂接口和多个具体工厂类,每个具体工厂类都实现了工厂接口,用于创建特定类型对象。客户端通过调用具体工厂工厂方法来创建不同类型对象,而无需了解对象具体创建过程。...结构工厂方法模式包含四个角色:抽象产品类具体品类、抽象工厂类和具体工厂类。抽象产品类抽象产品类定义了产品公共接口和属性具体品类继承抽象产品类并实现其接口和属性。...具体品类具体品类继承抽象产品类并实现其接口和属性,用于创建特定类型产品。抽象工厂类抽象工厂类定义了工厂方法接口,用于创建抽象产品类对象。...客户端不关心对象具体创建过程,只需要知道如何使用对象。需要灵活地添加新品类,而不影响现有的客户端代码。示例代码假设我们要实现一个图形工厂,根据客户端传入参数创建不同类型图形对象。

13230
  • 创造对象艺术——深入理解工厂模式

    ,可以决定在什么时候创建哪一个产品类实例,客户端可以不需要创建具体对象,仅仅使用具体产品即可;(提供了一个工厂类,专门创建对象)可以通过引入配置文件方式,可以不修改任何客户端代码来更换和新增产品类...,提高了系统灵活性;客户端无须知道创建具体品类类名,指需要知道具体产品对应参数即可。...需要修改工厂逻辑;在产品类型较多时,工厂逻辑变复杂,不利于扩展和维护(违反了开闭原则)1.5 适用场景工厂类创建对象较少时(工厂逻辑不会过于复杂)客户端只需要传入工厂类需要参数,不关注创建过程...,增加了系统抽象性和理解难度,且在实现时可能需要用到DOM、反射等技术,增加了系统实现难度;2.5 适用场景一个类不知道它所需要对象类:在工厂方法模式中,客户端不需要知道具体品类类名,只需要知道所对应工厂即可...;AbstractProduct:抽象产品定义每一种产品所具体公共逻辑;ConcreteProduct:具体产品定义具体工厂生产具体产品;3.3 示例北方的人喜欢吃北方水果,而南方的人喜欢吃南方水果

    13610

    设计模式| 创建型模式

    此时,我们可以考虑将一些相关产品组成一个“产品族”, 由同一个工厂来统一生,这就是我们本文将要学习抽象工厂模式基本思想。...为什么使用单例模式 需要确保某个类只要一个对象, 或创建一个类需要消耗资源过多,如访问IO和数据库操作等,这时就需要考虑使用单例模式了。...四个要素: 产品类:一般是一个较为复杂对象,也就是说创建对象过程比较复杂,一般会有比较多代码量。 在本类图中,产品类是一个具体类,而非抽象类。...在建造者模式类图中,假如把这个导演类看做是最终调用客户端,那么图中剩余部分就可以看作是一个简单工厂模式了。...也就是说,工厂模式是将对象全部创建过程封装在工厂类中,由工厂类向客户端提供最终产品; 而建造者模式中,建造者类一般只提供产品类中各个组件建造,而将具体建造过程交付给导演类。

    53030

    设计模式工厂模式!深入解析简单工厂模式工厂方法模式和抽象工厂模式

    工厂类Factory中含有必要判断逻辑,决定创建具体品类ConcreteProduct实例,客户端只需要消费产品 客户端不需要知道需要创建具体品类ConcreteProduct类名,只需要知道具体品类...Product类型实例 工厂实现类ConcreteFactory中包含与客户端密切相关逻辑,并且被客户端调用来创建具体产品实例 抽象产品类Product: 工厂方法模式创建具体品类父类,定义类具体产品中共有的方法...: 工厂方法模式中,客户端不知道具体品类类名,只知道具体产品对象由哪一个具体工厂实现来创建....可以将具体工厂类名存储在配置文件或者数据库中 工厂方法模式使用场景示例: 日志记录器: 日志可以记录到本地磁盘,系统事件,远程服务器等等,用户可以选择日志记录位置 数据库访问: 当用户不知道最后系统采用哪一类数据库时...,这样会增加系统开销 可以将一些相关产品组成一个产品族,由同一个工厂来统一生 产品族: 位于不同产品等级结构中功能相关联产品组成家族 抽象工厂模式工厂方法模式区别: 抽象工厂模式: 抽象工厂模式是针对多个产品等级结构

    42420

    PHP高级特性-反射Reflection以及Factory工厂设计模式结合使用

    详细见PHP官网 PHP反射简介 Reflection能干什么 在上面讲到,可以使用反射来获取一个类所有属性以及方法还有注释文档,甚至可以获取类属性和方法访问权限[protected/private...而在工厂模式中,每一个生产对象都由自己工厂来生产,并且这些工厂都继承自同一个接口【即 interface CalculateFactory】 抽象工厂模式 抽象工厂模式提供创建一系列相关或相互依赖对象接口...三种模式概括为: 简单工厂: 一个抽象产品类(可以是:接口,抽象类,普通类),可以派生出多个具体品类 单独一个具体工厂类 每个具体工厂类只能创建一个具体品类实例工厂模式: 一个抽象产品类(可以是...抽象类,普通类),每个抽象产品类可以派生出多个具体品类 一个抽象工厂类(可以是:接口,抽象类),可以派生出多个具体工厂类 每个具体工厂类可以创建多个具体品类实例 三个模式之间区别: 简单工厂模式只有一个抽象产品类...,只有一个具体工厂工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类 工厂方法模式具体工厂类只能创建一个具体品类实例,而抽象工厂模式可以创建多个具体品类实例 工厂模式与反射结合使用

    64020

    【愚公系列】2023年11月 二十三种设计模式(零)-简单工厂模式(Simple Factory Pattern)

    封装对象创建逻辑:工厂将对象创建逻辑封装在自己内部,客户端无需关心对象如何创建以及所需构造参数。这有助于降低客户端具体对象之间耦合度,提高代码灵活性和可维护性。...定义产品不同类型:在简单工厂模式中,可能会有多个具体产品,每个具体产品代表了不同品类型或变体。这些不同类型产品通过具体品类来表示,工厂可以根据客户端需求创建不同类型具体产品。...支持工厂创建:工厂根据客户端请求,使用不同具体品类来创建相应类型产品实例。每个具体品类都有自己构造方法,工厂通过调用这些构造方法来创建产品。...本案例将向大家展示如何使用简单工厂模式来生产不同种类水果。...客户端不需要知道具体产品类名:如果客户端代码不需要知道具体品类名称或实现细节,而只需关心产品接口或抽象类,那么可以使用简单工厂模式来隐藏具体产品细节。

    19712

    简单工厂模式

    简单工厂模式概述 简单工厂模式基本实现流程 具体品类:将需要创建各种不同产品对象相关代码封装到具体品类中 抽象产品类:将具体品类公共代码进行抽象和提取后封装在一个抽象产品类工厂类:提供一个工厂类用于创建各种产品...构造函数名字都与类名相同,构造函数和参数列表中大家很难了解不同构造函数所构造产品差异 à 将对象创建过程封装在工厂类中,可以提供一系列名字完全不同工厂方法,每一个工厂方法对应一个构造函数,客户端可以以一种更加可读...简单工厂模式简化 将抽象产品类工厂类合并,将静态工厂方法移至抽象产品类中 简单工厂模式优缺点与适用环境 模式优点 实现了对象创建和使用分离 客户端无须知道所创建具体品类类名,只需要知道具体品类所对应参数即可...通过引入配置文件,可以在不修改任何客户端代码情况下更换和增加新具体品类,在一定程度上提高了系统灵活性 模式缺点 工厂类集中了所有产品创建逻辑,职责过重,一旦不能正常工作,整个系统都要受到影响...模式适用环境 工厂类负责创建对象比较少,由于创建对象较少,不会造成工厂方法中业务逻辑太过复杂 客户端只知道传入工厂参数,对于如何创建对象并不关心

    32610

    初识设计模式

    : 简单工厂模式提供专门工厂类用于创建对象,实现了对象创建和使用职责分离,客户端不需知道所创建具体品类类名以及创建过程,只需知道具体品类所对应参数即可,通过引入配置文件,可以在不修改任何客户端代码情况下更换和增加新具体品类...每 实现工厂类,由具体工厂类决定要实例化产品是哪个,将对象创建与实例化延迟到子类,这样工厂设计就符合“开闭原则”了,扩展时不必去修改原来代码。...实现代码: 创建抽象工厂实现方法 /** * 抽象创建工厂 * 注意,我们在这里采用了泛型(Generic),通过定义泛型对createHuman输入参数 * 生两层限制: * ● 必须是Class...(为其他对象提供 一种代理以控制对这个对象访问。)...● 高扩展性 具体主题角色是随时都会发生变化,只要它实现了接口,甭管它如何变化,都逃不脱 如来佛手掌(接口),那我们代理类完全就可以在不做任何修改情况下使用。

    18630

    「聊设计模式」之工厂方法模式(Factory Method)

    工厂方法模式中,我们不会指定要创建哪个类对象,而是由子类决定要创建哪个类对象。这样我们就可以将对象创建代码中解耦,使得代码更加灵活。   ...抽象产品(Product):定义一个产品抽象类,它包含了一些基本属性和方法,这些方法或属性将会被具体品类所实现和覆盖。...如下是工厂方法模式UML类图: 优缺点 优点 工厂方法模式有以下优点: 工厂方法模式将产品实现和客户端代码隔离开来,使得客户端代码无需关心具体产品实现细节。...应用场景 工厂方法模式适用于以下场景: 需要对产品实现进行抽象,客户端只需要调用抽象工厂接口,而不需要关心具体实现细节。 需要动态添加新产品,只需要添加相应品类工厂类即可。...,包括以下几个部分: 客户端代码(Client):其中包含一个 main 方法,用来演示如何使用工厂模式创建产品并调用其方法。

    425113

    抽象工厂模式:创建高效强大对象家族

    归纳起来就是:每次增加一个产品时,都需要增加一个具体类和一个对象实现工厂。随着产品类增多,使得系统中类个数成倍增加,在一定程度上增加了系统复杂度,同时也增加了系统具体依赖。...当我们考虑将一些相关产品组成一个“产品族”,由同一个工厂来统一生时,就形成了抽象工厂模式基本思想。...而这个抽象工厂要提供这些不同接口或抽象类实例对象。一个工厂提供多个实例对象,且这些实例间相互关联或相互依赖抽象工厂模式,可以看做是工厂方法模式升级版,生产一个产品,到生产一系列产品。...来看看抽象工厂模式包含几个角色: 产品族抽象工厂:用来声明生成抽象产品方法。产品族工厂:专门生产一组相关具体产品工厂类。产品抽象类:工厂类能创建出来所有产品类抽象。...(这里必须要一个抽象类,不然不能保证返回不同品类属于同一个类型)产品类工厂类创建出来目标。它(们)是产品抽象类具体实现。示例现在我们来修改之前“手机和电脑配对”代码。

    28200

    「聊设计模式」之简单工厂模式(Simple Factory)

    依赖倒置原则:客户端只依赖于工厂类,不依赖于具体品类工厂角色 工厂角色是简单工厂模式核心,负责实现简单工厂模式创建过程。...结构 简单工厂模式包含以下几个角色: 工厂类(Factory):负责创建所有产品实例,并且提供一个可以根据参数创建不同产品方法。 抽象产品类(Product):定义了产品通用属性和行为。...具体品类(ConcreteProduct):实现了抽象产品类接口,并且定义了具体产品属性和行为。...模式实现   如下便通过Java代码实现一个简单地工厂模式,同学们认真看,其中模式如何运转,演示如下: 定义抽象产品类   定义一个抽象产品类,其中定义一个无返回值抽象方法execute();在简单工厂模式中...同时,工厂模式也可以避免客户端直接依赖具体品类,降低了代码耦合度,提高了代码可维护性和扩展性。 小结   本文主要介绍了简单工厂模式基本概念和代码实现。

    647172

    Kotlin 设计模式及实战 (持续更新中......)

    客户端无须知道所创建具体品类类名,只需要知道具体品类所对应参数即可,对于一些复杂类名,通过简单工厂模式可以减少使用者记忆量。...客户端只知道传入工厂参数,对于如何创建对象不关心:客户端既不需要关心创建细节,甚至连类名都不需要记住,只需要知道类型所对应参数。 1.11....简单工厂模式适用情况包括:工厂类负责创建对象比较少;客户端只知道传入工厂参数,对于如何创建对象不关心。 2....适用环境 在以下情况下可以使用工厂方法模式: 一个类不知道它所需要对象类:在工厂方法模式中,客户端不需要知道具体品类类名,只需要知道所对应工厂即可,具体产品对象由具体工厂类创建;客户端需要知道创建具体产品工厂类...访问模式依赖了具体类,而没有依赖抽象类。 模式结构与实现 访问者(Visitor)模式实现关键是如何将作用于元素操作分离出来封装成独立类,其基本结构与实现方法如下。

    1.2K20

    「聊设计模式」之抽象工厂模式(Abstract Factory)

    创建具体工厂类   具体工厂类实现抽象工厂类中定义抽象方法,用于创建具体产品。具体工厂类中也可以包含额外方法和属性,用于定制化产品创建。...这些具体品类将被工厂类使用来创建具体产品对象。 5. 创建客户端代码   客户端代码使用抽象工厂来获取其需要使用产品,客户端代码不需要知道如何创建产品,只需要知道如何使用它们。...在代码实现方面,需要定义抽象工厂类和抽象产品类具体工厂类和具体品类实现抽象工厂和抽象产品方法。客户端通过创建具体工厂对象来获得不同种类产品对象,而不需要了解具体实现细节。...具体工厂类实现抽象工厂类中定义抽象方法,用于创建具体产品。抽象产品类定义产品公共接口,具体品类实现抽象产品类中定义抽象方法,用于实例化具体产品。   ...在客户端代码中,使用抽象工厂来获取需要使用产品,不需要知道如何创建产品,只需要知道如何使用它们。

    49143

    【地铁上设计模式】--创建型模式:抽象工厂模式

    抽象工厂模式具体产品创建与客户端代码分离开来,通过引入抽象工厂和抽象产品来实现对象解耦和隐藏。抽象工厂负责定义一组用于创建一系列产品对象方法,每个方法对应一个具体产品族创建过程。...在使用抽象工厂模式时,客户端只需要关注抽象工厂和抽象产品,而不需要关注具体实现细节。...抽象工厂模式可以保证产品一致性和相互依赖性,同时还可以提供高度灵活性和可扩展性,因为只需要增加新具体品类和对应具体工厂类即可实现系统扩展。...如何实现抽象工厂模式 实现抽象工厂模式需要遵循以下步骤: 定义抽象产品类:抽象产品类定义产品接口规范,包括产品属性和方法等,所有具体品类都必须实现这些接口规范。...通过使用抽象工厂模式客户端可以创建一组相关产品对象,而无需知道它们具体实现,优点在于方便地增加一组相关产品,同时保证它们之间一致性。

    19310

    设计模式工厂模式

    通俗地来讲,子类能够扩展父类功能,但是不能改变原来父类原有的功能。 接口隔离原则: 客户端不应该依赖于它所不需要接口,设计接口时尽量精简单一。...1、简单工厂模式 ---- 之所以简单,是因为它只涉及到具体工厂类,抽象产品类具体品类,下面直接来看代码。...普通工厂UML 2、工厂模式 ---- 现在问题来了,如果这个工厂继续和小米,华为合作的话 ? 需要加钱 开玩笑开玩笑,除了具体品类需要增加,是不是也需要修改具体工厂类,这是我们不希望看到。...需要抽象产品类具体品类,抽象工厂类,具体工厂类 抽象产品类: 和上面用是一样抽象产品,这里不再赘述 具体产品: 同样是魅族和一加手机 抽象工厂类: public abstract class AbstractPhoneFactory...需要抽象工厂类,具体抽象工厂类,抽象产品类,产品族具体抽象产品类具体品类 抽象产品类: public abstract class AbstractPhone { public abstract

    27040

    设计模式之静态工厂工厂方法和抽象工厂联系与区别

    分析: 工厂角色:被客户端直接调用,根据客户端指定传入参数,动态创建客户端需要对象; 抽象产品角色:所有对象父类(接口); 具体产品角色:即工厂创建目标,工厂创建对象就是这些具体对象。...---- 优点: 通过使用工厂类,外界可以直接创建具体产品对象尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织.明确了各自职责和权利。...③ 每个具体工厂类只能创建一个具体品类实例。 抽象工厂模式:① 多个抽象产品类,每个抽象产品类可以派生出多个具体品类。        ...② 一个抽象工厂类,可以派生出多个具体工厂类。        ③ 每个具体工厂类可以创建多个具体品类实例。 区别:① 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。...② 工厂方法模式具体工厂类只能创建一个具体品类实例,而抽象工厂模式可以创建多个。 ----

    1.5K20

    设计模式——一文即可

    它根据客户端请求创建相应具体产品对象,并返回给客户端使用。简单工厂隐藏了对象创建细节,客户端只需通过工厂类获取所需对象,而无需直接实例化具体品类。...它根据客户端请求创建相应具体产品对象,并返回给客户端使用。 核心思想 将对象创建过程封装在一个工厂类中,客户端只需通过工厂静态方法来获取所需对象,而无需直接实例化具体品类。...这样可以降低客户端复杂性,并且方便了产品类扩展和维护。 降低了客户端具体品类之间耦合度 客户端只需通过工厂类获取所需对象,而无需直接实例化具体品类。...这样可以降低客户端具体品类之间依赖关系,使客户端代码更加灵活和可维护。 方便了产品类扩展和维护 在简单工厂模式中,如果需要新增产品类型,只需修改工厂代码即可。...这样可以方便地添加新品类型,而无需修改客户端代码。同时,也方便了产品类维护,集中管理了对象创建过程。 缺点 违反了开闭原则 在简单工厂模式中,当新增产品类型时,需要修改工厂代码。

    51210

    一文搞懂设计模式工厂方法模式

    通过这些角色协作,工厂方法模式实现了将产品创建过程封装起来,使得客户端具体产品解耦,同时也提供了灵活性和可扩展性。...在客户端代码中,我们可以根据需要选择不同具体工厂类来创建产品对象。...客户端具体产品解耦:客户端代码只和抽象工厂类以及抽象产品类交互,无需关心具体实现细节,从而实现了高层模块和底层模块解耦。...简单工厂模式 当只有少量具体品类时,并且对象创建逻辑相对简单,没有必要为每个具体品类创建一个对应工厂类,此时使用简单工厂模式会更加简洁和直观。...工厂类 AnimalFactory 负责根据客户端传入参数创建相应具体产品对象。 使用简单工厂模式客户端可以通过调用工厂静态方法 createAnimal() 来获取所需具体产品对象。

    20610

    Java面向对象设计之工厂方法模式

    工厂方法模式中,工厂父类负责定义创建产品对象公共接口,而工厂子类则负责生成具体产品对象,这样做目的是将产品类实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体品类。...优点 工厂方法模式优点: 在工厂方法模式中,工厂方法用来创建客户所需要产品,同时还向客户隐藏了哪种具体品类将被实例化这一细节,用户只需要关心所需产品对应工厂,无须关心创建细节,甚至无须知道具体品类类名...基于工厂角色和产品角色多态性设计是工厂方法模式关键。它能够使工厂可以自主确定创建何种产品对象,而如何创建这个对象细节则完全封装在具体工厂内部。...使用工厂方法模式另一个优点是在系统中加入新产品时,无须修改抽象工厂和抽象产品提供接口,无须修改客户端,也无须修改其他具体工厂具体产品,而只要添加一个具体工厂具体产品就可以了。...适用环境 在以下情况下可以使用工厂方法模式: 一个类不知道它所需要对象类:在工厂方法模式中,客户端不需要知道具体品类类名,只需要知道所对应工厂即可,具体产品对象由具体工厂类创建;客户端需要知道创建具体产品工厂

    48010
    领券