当前位置: 首页 > news >正文

商标设计大全/seo黑帽培训骗局

商标设计大全,seo黑帽培训骗局,做网站软件A开头的,做宣传单找素材去什么网站比较好1 | 简单工厂模式的概述 简单工长模式并不属于 GoF 的 23 种经典设计模式,但通常将它作为学习其他工厂模式的基础。 举例:考虑一个水果农场,当用户需要一种水果时,该农场能够根据用户所提供的水果名称返回该水果。类比&#xff…

1 | 简单工厂模式的概述

简单工长模式并不属于 GoF 的 23 种经典设计模式,但通常将它作为学习其他工厂模式的基础。

  • 举例:考虑一个水果农场,当用户需要一种水果时,该农场能够根据用户所提供的水果名称返回该水果。
  • 类比:水果农场(工厂/Factory),农场的水果(产品/Product),水果的名称(参数/arg);

作为最简单的设计模式之一,简单工厂模式的设计思想和实现过程都比较简单,其基本实现流程如下:

  1. 将需要创建的各种不同产品对象的相关代码封装到不同的类中,这些类称为具体产品类,而将它们公共的代码进行抽象和提取后在封装在一个抽象产品类中,每一个具体类都是一个抽象产品类的子类(派生类);
  2. 提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方法,该方法可以根据所传入参数的不同创建不同的具体产品对象;
  3. 客户端只需要用工厂类的工厂方法并传入相应水果的名称参数即可得到一个产品对象;

1.1 简单工厂模式的定义

简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类;

由于在简单工厂模式中用于创建实例的方法通常是静态(static)方法,因此简单工厂模式又被称为 静态工厂方法模式(Static Factory Method) 它是一种类创建型模式

要点:如果需要什么,只需传入一个正确的参数,就可以获取所有需要的对象,而无需知道该对象的创建细节。

2 | 简单工厂模式的结构与实现

2.1 简单工厂模式的结构

由上图可见,简单工厂模式包含以下 3 个角色:

  • Factory(工厂):工厂角色既工厂类,它是简单工厂模式的核心,负责实现创建所有产品实例对象的内部逻辑;工厂类被外界调用,创建所需的产品对象;在工厂类中提供了静态的工厂方法 FactoryMethod(string arg),返回类型为抽象产品类型 Product。
  • Product(抽象产品角色):它是工厂类所创建的所有对象的父类,封装了各种产品对象的公共方法,它的引入将提高系统的灵活性,使得在工厂类中只需定义一个通用的工厂方法,因为所有创建的具体产品对象都是该子类对象;
  • ConcreteProduct(具体产品对象):他是简单工厂模式的创建目标,所有被创建的对象都充当这个角色的某个具体类的实例。每一个具体产品角色都继承了抽象产品角色,需要实现在抽象产品(父类)中声明的抽象方法。

2.2 简单工厂模式的实现

完整代码实例请查看 :https://gitee.com/dolayout/DesignPatternOfCSharp/tree/master/DesignPatternOfCSharp/SimpleFactoryPattern

2.3 简化模式结构

有时候为了简化简单工厂模式,可以将抽象产品类和工厂类合并,将静态工厂方法移到抽象产品类中,结构如下图所示:

上图中,客户端可以通过调用产品父类的静态工厂方法,根据不同参数创建不同类型的产品子类对象,这种方法在很多类库和框架中也广泛使用。

3 | 简单工厂模式的优缺点与适用环境

简单工厂模式提供了专门的工厂类用于创建对象,将对象的创建和对象的使用分离开,它作为一种最简单的工厂模式在软件开发中得到了较为广发的应用。

3.1 优点

(1)工厂类包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的职责.而仅仅“消费”产品,简单工厂模式实现了对象创建和使用的分离。
(2)客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以在一定程度上减少使用者的记忆量。
(3)通过引人配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度 上提高了系统的灵活性。

3.2 缺点

(1) 由于工厂类集中了所有产品的创建逻辑,职责过重,一且不能正常工作,整个系统都要受到影响。
(2)使用简单工厂模式势必会增加系统中类的个数(引人了新的工厂类),增加了系统的复杂度和理解难度。
(3)系统扩展困难,一且添加新产品不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。
(4)简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。在C#语言中,不能通过类的实例对象来访问静态方法和静态变量,无法在客户端代码中针对工厂父类编程.而在运行时使用工厂子类对象来覆盖父类,因此,工厂类不能得到很好地扩展。

3.3 适用环境

(1)工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑过于复杂。
(2)客户端只知道传入工厂类的参数,对于如何创建对象并不关心。

http://www.lbrq.cn/news/796321.html

相关文章:

  • 行业网站域名选择/seo交流论坛seo顾问
  • vps 同时做ssh和做网站/北京seo关键词优化收费
  • 镇江住房建设网站/网站页面关键词优化
  • 做网站的说3年3年包括什么/汕头seo全网营销
  • 网站开发兼职合同/网络推广网站排名
  • 小程序商城制作平台/厦门seo培训学校
  • 二级建造师官网查询系统/优化大师最新版下载
  • 武汉建设网站哪家好/网站联盟推广
  • 网站开发指的是什么/百度发作品入口在哪里
  • 长春网站建设及推广/北京网络营销推广公司
  • 兰州网站建设报价/房地产销售技巧和话术
  • 教育网站建设策划书/郑州seo网站关键词优化
  • ui设计速成培训机构/淘宝关键词优化软件
  • 网站没排名怎么办/网站制作多少钱一个
  • 做图片的网站都有哪些/南通网络推广
  • 石家庄 外贸网站建设公司/汽车行业网站建设
  • wordpress 邮件美化/aso优化服务平台
  • 纯ajax网站如何做seo/免费seo培训
  • 昆明小程序定制开发/清理优化大师
  • WordPress主题zero/优化推广服务
  • 广州家居网站设计/百度搜索智能精选
  • 江阴公司企业网站建设/济南做seo的公司排名
  • 中铁建设集团集采网站/注册一个公司网站需要多少钱
  • 商城网站建设平台/竞价防恶意点击
  • 互联网做网站/1个百度指数代表多少搜索
  • 效果图制作软件app/seo 优化思路
  • 西宁做手机网站的公司/太原网站建设开发
  • 如何设计公司网站/潍坊网站模板建站
  • 公司网站建设建议/关键词数据分析工具有哪些
  • 做3dmax效果图任务的网站/水果网络营销策划书
  • 《 ThreadLocal 工作机制深度解析:高并发场景的利与弊》
  • i Battery Box V3.7 客户端电池检测仪
  • AG32mcu通过寄存器方式操作cpld
  • 硬件-电容学习DAY1——钽电容失效揭秘:从冒烟到爆炸全解析
  • 微波(Microwave)与毫米波(Millimeter wave)简介
  • chroma、faiss和milvus三者之间的区别和联系