首页 > 其他分享 >设计模式之工厂方法模式

设计模式之工厂方法模式

时间:2024-08-24 15:05:13浏览次数:7  
标签:模式 工厂 具体 产品 抽象 设计模式 方法

    简单工厂模式虽然简单,但是存在一个问题:当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背开闭原则。在工厂方法模式中,不再提供一个统一的工厂类来创建所有的产品对象,而是针对不同的产品提供不同的工厂,系统提供一个与产品等级结构对于的工厂等级结构。

    工厂方法模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到子类。工厂方法模式提供一个抽象工厂接口来声明抽象工厂方法,而由其子类来具体实现工厂方法,创建具体的产品对象。

 

 

 

 

 

 

 

 

1. Product(抽象产品):它是定义产品的接口,是产品对象的公共父类。

2. ConcreteProduct(具体产品):它实现了抽象产品接口,某种类型的具体产品由专门的具体工厂创建,具体工厂与具体产品之间一一对应。

3. Factory(抽象工厂):在抽象工厂类中,声明了工厂方法(FactoryMethod),拥有返回一个产品。抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口。

4. ConcreteFactory(具体工厂):它是抽象工厂类的子类,实现了抽象工厂中定义的工厂方法,并可由客户端调用,返回一个具体产品类的实例。

   与简单工厂模式相比,工厂方法模式最重要的区别是引入了抽象工厂角色。抽象工厂可以是接口,也可以是抽象类或者具体类。

   在实际使用时,具体工厂类在实现工厂方法时除了创建具体产品对象之外,还可以负责产品对象的初始化工作以及一些资源和环境配置工作,例如连接数据库、创建文件等。

      在客户端代码中,只需关心工厂类即可。不同的具体工厂可以创建不同的产品,典型的客户端类代码如下:

 示例:

 

 

 

标签:模式,工厂,具体,产品,抽象,设计模式,方法
From: https://www.cnblogs.com/LXLR/p/18377773

相关文章

  • 设计模式之简单工厂模式
     简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。1.Factory:工厂类,它是简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。在工厂类中提供了静态的工厂方法factoryMet......
  • 设计模式之单例模式
    创建型模式将对象的创建和使用分离,在使用对象时无需关注对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。模式名称定义学习难度使用频率单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例一颗星四颗星简单工厂模式定义一......
  • 前端宝典十六:深入浅出8大设计模式
    本文主要探讨前端开发中的各种设计模式,主要分类有:单例模式建造者模式代理模式装饰器模式适配器模式策略模式观察者模式发布订阅模式通过对他们实际开发中的使用场景的解析,深入浅出的一起更全面直观的进行学习:一、单例模式介绍:单例模式确保一个类只有一个实例,并提供一个......
  • uefi模式无法读取u盘启动怎么办_uefi模式无法读取u盘启动解决方法
    最近有网友问我uefi模式下我按快捷方式或bios中都认别不了U盘,无法正常选择u盘启动进入pe安装系统,出现这种情况一般是bios中设置了uefi模式,而制作的u盘启动不支持uefi启动导致,那么uefi模式无法读取U盘启动怎么办?下面小编就教大家uefi模式无法读取u盘启动解决方法步骤。 u......
  • 设计模式(三)
    结构型模式装饰器模式:动态的给一个对象增加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。优/缺点:装饰模式是继承关系的一个替代方案。装饰模式可以动态地扩展一个实现类的功能。缺点:多层的装饰还是比较复杂何时使用:需要扩展一个类的功能,或给一个类增加附加功......
  • lua协程实现异步编程模式
    异步编程模式只是一个代码结构,c#中的async/await的写法就是异步编程模式,这边就是通过协程来达到和async/await类似的效果。 异步编程模式写法1:资源分帧加载这边运行环境用的是:Unity+xLua lua脚本:Assets/Lua/Test9.lua.txtlocal_Time=CS.UnityEngine.Timelocalfunct......
  • Linux下Redis的安装和部署(哨兵模式)
    1.哨兵模式配置文件redis服务 redis端口 哨兵端口 主从redis-1 7001 27001 主节点redis-2 7002 27002 从节点redis-3 7003 27003 从节点下载Rediscurl-Ohttp://download.redis.io/releases/redis-6.0.6.tar.gz解压Redistarxzvfredis-6.0.6.tar.gz进入redis-6.0.6目......
  • 工厂老板、设计师怎么选通风采光天窗?重点关注哪些方面?
    选通风采光天窗首先看预算与通风采光需求,然后看品牌和售后,选购过程中重点关注天窗的型号、规格尺寸、材料配置、外观造型及颜色。一、预算与通风采光需求通风采光天窗已成为厂房建筑上必备的屋顶设备,现目前天窗的型号多样,价位差异较大。选择通风采光天窗时首先考虑预算,根据预......
  • 设计模式概述和设计原则
    1.设计模式的概念软件设计模式(SoftwareDesignPattern),是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具......
  • 设计模式[4]-建造者模式
    代码:https://gitee.com/Aes_yt/design-pattern建造者模式建造者模式是将一个复杂对象,解构为多个简单的对象,然后一步一步慢慢构造成原对象。建造者模式主要包括四种角色:抽象建造者:具有产品的多个子部件的抽象接口,最终可以返回完整产品具体建造者:对抽象建造者的实现,有多个子......