工厂模式的三种类型

合集下载

简单工厂模式、工厂模式和抽象工厂模式区别及优缺点

简单工厂模式、工厂模式和抽象工厂模式区别及优缺点

简单⼯⼚模式、⼯⼚模式和抽象⼯⼚模式区别及优缺点各位⼩伙伴好,今天给⼤家主要介绍⼀下简单⼯⼚模式、⼯⼚模式和抽象⼯⼚模式的区别及各⾃的优缺点。

(本⽂实现语⾔为Python3)【前⾔】众所周知今天所讲的内容是设计模式的⼀类;对于设计模式这个概念,我想⾸先请⼤家问问⾃⼰:1、什么是设计模式 2、我们为什么要了解并学习设计模式?从我上学的时候我相信⼤家跟我⼀样也接触过设计模式的课程,当时可能懵懵懂懂只是知其然,当时还会想明明可以直接写出来为什么要搞成这样的形式,我就算学会了它到底什么时候能⽤呢?⼀系列的问题...Emm算了到时候再想想(lazy)。

随着实践的不断增多,现在我想可以对这些问题有个初步的回答了: 1、在我看来,设计模式外在看是经过前⼈不断实践总结出的针对某些指定场景极其好⽤的⼀种代码结构设计模板;内在看其实是⼀种设计思想(即为什么他们会这么想,这样想较之其他⽅法有什么好处)。

当我们真正的理解设计思想的时候,就可能会在⾯对问题和场景时⾃然⽽然的灵活运⽤到多种设计模式,⽽不是单⼀的刻板结构。

2、在⼯程化的开发中,需求往往是会不断变化的,这也是让很多开发⼈员及其烦躁的地⽅,所以才会有开发与产品的亲密关系。

设计模式就是为了抵御外部需求变化产⽣的。

设计模式应符合开闭原则(类、模块和函数等应该对扩展开放,对修改关闭。

)⼀个好的设计在之后的开发中,包括发⽣重⼤需求变化的时候,往往代码只需要进⾏简单重构去进⾏适配,⽽不是通过打补丁的⽅式去堆砌,也很容易避免破窗效应,充分的发挥了灵活的扩展和适配,⼤⼤增强了维护性。

综上所述,我们了解并学习设计模式,可以使我们的代码变得更加健壮、结构清晰,可以从容、灵活的适配需求变更(可复⽤、可扩展、可维护、够灵活)【正⽂】⾸先,这三种模式解决的问题是实例化对象的问题;那么为什么不直接实例化⽽⽤这样的⼯⼚形式去实例化对象呢?因为【待实例化对象太多(⼦类多且变动、调⽤频繁)或者实例化对象的过程、准备⽐较复杂】,直接实例化意味着每次都⽤重复的去执⾏实例化这个操作,如果有很多待实例化的操作,那么就要重复执⾏很多次,更不要说万⼀在实例化之前还要执⾏⼀堆配置项的初始化。

策略模式简单工厂模式抽象工厂模式

策略模式简单工厂模式抽象工厂模式

策略模式简单工厂模式抽象工厂模式策略模式、简单工厂模式和抽象工厂模式是常见的设计模式,用于解决不同的问题和满足不同的设计需求。

下面将分别介绍这三种模式,并进行详细的比较。

策略模式策略模式是一种行为型模式,它将一组特定的算法封装成一个独立的类,使得它们可以相互替换。

应用策略模式的主要目的是让算法的变化独立于使用算法的客户端。

策略模式将算法的定义与算法的使用分离开来,这样可以让算法的定义更加灵活,能够根据需要动态地改变。

简单工厂模式简单工厂模式是一种创建型模式,它由一个工厂类负责创建不同类型的对象。

简单工厂模式的核心思想是将对象的创建过程封装起来,客户端只需要通过一个工厂类的方法来获取所需的对象,而不需要了解创建对象的细节。

简单工厂模式常常使用静态方法来创建对象,这样客户端可以直接通过类名来调用工厂方法。

抽象工厂模式也是一种创建型模式,它提供了一种创建一族相关或相互依赖对象的接口,而不需要指定具体的类。

抽象工厂模式的核心思想是将对象的创建过程封装到一个工厂接口中,具体的工厂类实现这个接口来创建不同的对象。

抽象工厂模式可以用于创建一系列的产品对象,这些产品对象有一定的关联关系。

比较1.目的不同:-策略模式的目的是将一组算法封装起来,使得它们可以相互替换。

-简单工厂模式的目的是封装对象的创建过程,使得客户端只需要通过一个工厂类的方法来获取所需的对象。

-抽象工厂模式的目的是提供一种创建一族相关或相互依赖对象的接口。

2.使用场景不同:-策略模式适用于一组特定的算法需要进行动态切换或扩展的场景。

-简单工厂模式适用于需要根据输入参数来决定创建具体对象的场景。

-抽象工厂模式适用于需要创建一系列相关或相互依赖的对象的场景。

3.灵活性不同:-策略模式的算法可以灵活地添加、删除或替换,客户端可以根据需要动态地选择所需的算法。

-简单工厂模式的创建过程在工厂类中,所以客户端只能通过修改工厂类代码来实现创建对象的变化,不够灵活。

代工模式OEM OBM ODM CMT

代工模式OEM OBM ODM CMT

代工模式OEM OBM ODM CMT
oem是指托厂商按原厂之需求与授权,依特定的条件而生产。

obm即代工厂经营自有
品牌。

odm指原始设计制造商。

cmt全称是cutting, making, trimming指来料加工。

1、odm是英语original design manufacturer的缩写,直译是“原始设计制造商”。

odm是指某制造商设计出某产品后,在某些情况下可能会被另外一些企业看中,要求配上
后者的品牌名称来进行生产,或者稍微修改一下设计来生产。

其中,承接设计制造业务的
制造商被称为odm厂商,其生产出来的产品就是odm产品。

2、oem生产,也称作定点生产,又称代工(生产),基本含义为品牌生产者不轻易生产产品,而是利用自己掌控的关键的核心技术负责管理设计和研发新产品,掌控销售渠道。

3、obm即代工厂经营自有品牌,由于代工厂做obm要有完善的营销网络作支撑,渠道建设的费用很大,花费的精力也远比做oem和odm高,而且常会与自己oem、odm客户有
所冲突。

通常为保证大客户利益,代工厂很少大张旗鼓地去做obm。

4、cmt全称就是cutting, making, trimming指来料加工.即为由进口商提供更多一
定的原材料、半成品、零部件、元器材, 有时候也可以提供更多有关的设备与技术,由出
口方加工企业根据进口商的建议展开加工加装,成品缴外商销售,出口方缴纳加工费的一种
贸易方式。

对工厂模式的理解

对工厂模式的理解

对工厂模式的理解工厂模式是一种常用的设计模式,它属于创建型模式,用于封装对象的创建过程。

通过工厂模式,我们可以将对象的创建和使用分离,提高代码的可维护性和扩展性。

在软件开发中,我们经常需要创建不同类型的对象。

如果我们直接在代码中使用new关键字来创建对象,那么代码的可维护性会变差。

当我们需要创建新的对象时,就需要修改已有的代码,违反了开闭原则。

而工厂模式的出现,正是为了解决这个问题。

工厂模式的核心思想是将对象的创建过程封装在一个工厂类中,客户端只需要调用工厂类的方法,即可获取所需的对象。

工厂类根据客户端的请求,选择合适的参数和逻辑来创建对象,并将对象返回给客户端。

工厂模式有三种常见的实现方式:简单工厂模式、工厂方法模式和抽象工厂模式。

简单工厂模式是最简单的工厂模式,它由一个工厂类负责创建所有的产品对象。

客户端只需要提供一个参数,工厂类根据这个参数来创建相应的对象。

简单工厂模式的优点在于客户端不需要关心对象的创建过程,只需要关心如何使用对象即可。

但是它的缺点也很明显,工厂类负责创建所有的对象,当对象类型较多时,工厂类会变得臃肿,不易于扩展。

工厂方法模式是简单工厂模式的升级版,它将工厂类抽象成接口或抽象类,每个具体的产品对象由专门的工厂类负责创建。

客户端需要使用哪种产品对象,就使用相应的工厂类来创建。

工厂方法模式的优点在于每个工厂类只负责创建特定类型的对象,更符合单一职责原则,代码结构更加清晰。

但是它的缺点在于客户端需要知道每个工厂类的具体实现,不够简洁。

抽象工厂模式是工厂方法模式的进一步扩展,它将多个工厂方法组合到一起,形成一个工厂族,每个工厂负责创建对应的产品族。

客户端通过选择工厂族,即可创建所需的产品对象。

抽象工厂模式的优点在于客户端不需要关心具体的工厂和产品,只需要知道选择哪个工厂族即可。

但是它的缺点在于当需要增加新的产品族时,需要修改抽象工厂的接口,违反了开闭原则。

工厂模式的应用场景非常广泛,特别是在需要创建多种类型的对象时,可以有效地降低代码的耦合度。

设计模式-创建型模式的优缺点比较

设计模式-创建型模式的优缺点比较

比较几种创建型模式的优缺点,仔细考察这几种模式的区别和相关性。

第一类是工厂模式,工厂模式专门负责将大量有共同接口的类实例化。

工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。

工厂模式有三种形态:简单工厂模式;工厂方法模式;抽象工厂模式是。

前两者是类的创建模式,后者是对象的创建模式。

简单工厂:简单工厂模式是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例,涉及工厂角色(Creator)、抽象产品(Product)角色及具体产品(Concrete Product)角色等三个角色。

优点:模式的核心是工厂类,该类中含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅负责“消费”产品。

简单工厂模式实现了对责任的分割。

缺点:当产品类有复杂的多层次等级结构时,工厂类只有它自己。

模式中工厂类集中了所有的产品创建逻辑,形成一个无所不知的全能类。

将多个创建逻辑放在一个类中,当产品类有不同接口种类时,工厂类需要判断在什么时候创建某种产品,使得系统在将来进行功能扩展时较为困难。

该模式采用静态方法作为工厂方法,而静态方法无法由子类继承,因此工厂角色无法形成基于继承的等级结构。

简单工厂模式只在有限的程度上符合“开-闭”原则。

工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

Factory Method使一个类的实例化延迟到其子类。

工厂方法模式是简单工厂模式的进一步抽象和推广,其基本思想是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。

优点:多态性:客户代码可以做到与特定应用无关,适用于任何实体类子类可以重写新的实现,也可以继承父类的实现。

加一层间接性,增加了灵活性。

良好的封装性,代码结构清晰。

扩展性好,在增加产品类的情况下,只需要适当修改具体的工厂类或扩展一个工厂类,就可“拥抱变化”屏蔽产品类。

产品类的实现如何变化,调用者都不需要关心,只需关心产品的接口,只要接口保持不变,系统中的上层模块就不会发生变化。

设计模式(简单工厂,工厂方法,抽象工厂)区别

设计模式(简单工厂,工厂方法,抽象工厂)区别

第一种表述简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。

其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。

本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。

简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。

不修改代码的话,是无法扩展的。

工厂方法工厂方法是针对每一种产品提供一个工厂类。

通过不同的工厂实例来创建不同的产品实例。

在同一等级结构中,支持增加任意产品。

抽象工厂抽象工厂是应对产品族概念的。

比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。

应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。

小结★工厂模式中,重要的是工厂类,而不是产品类。

产品类可以是多种形式,多层继承或者是单个类都是可以的。

但要明确的,工厂模式的接口只会返回一种类型的实例,这是在设计产品类的时候需要注意的,最好是有父类或者共同实现的接口。

★使用工厂模式,返回的实例一定是工厂创建的,而不是从其他对象中获取的。

★工厂模式返回的实例可以不是新创建的,返回由工厂创建好的实例也是可以的。

区别简单工厂:用来生产同一等级结构中的任意产品。

(对于增加新的产品,无能为力)工厂模式:用来生产同一等级结构中的固定产品。

(支持增加任意产品)抽象工厂:用来生产不同产品族的全部产品。

(对于增加新的产品,无能为力;支持增加产品族)以上三种工厂方法在等级结构和产品族这两个方向上的支持程度不同。

所以要根据情况考虑应该使用哪种方法。

第二种表述简单工厂、工厂方法和抽象工厂都是创建型的设计模式。

三者的共同点是:1、都有两种作用不同的类:产品类和工厂类。

其中,工厂类在自己的方法中实例化产品类(即使用new命令生成产品类的对象),并将生成的产品类的对象提供给外部使用。

2、创建的过程,都是类似的:工厂类得到一个标志(可以由程序输入,也可以读取配置文件中的内容),返回一个产品对象。

工厂设计模式

工厂设计模式

工厂设计模式工厂设计模式是一种创建型设计模式,用于创建对象而不需要指定具体的类。

它通过提供一个接口,让子类决定实例化哪个类。

工厂设计模式将对象的创建逻辑封装在工厂类中,客户端只需要通过工厂类来创建对象,而不需要关心具体的实现细节。

这样可以将对象的创建与使用分离,提高系统的灵活性和可维护性。

工厂设计模式包含三个主要角色:抽象产品、具体产品和工厂类。

抽象产品是一个接口或抽象类,定义了产品的共同属性和方法。

具体产品继承了抽象产品,实现了具体的功能。

工厂类负责创建具体产品的对象,它通常包含一个工厂方法,用于创建产品对象。

工厂设计模式适用于以下情况:1.当一个类无法预知它所需的对象的具体类型时,可以使用工厂设计模式。

通过工厂方法来创建对象,可以根据需要返回不同的具体对象。

2.当创建一个对象需要复杂的逻辑处理时,可以使用工厂设计模式。

将对象的创建逻辑封装在工厂类中,可以降低客户端的复杂性。

3.当系统需要多种类型的对象时,可以使用工厂设计模式。

通过工厂方法可以灵活地创建不同类型的对象,满足系统的需求。

工厂设计模式的优点是:1.封装了对象的创建逻辑,降低了客户端的复杂性。

2.提高了系统的灵活性和可维护性。

通过工厂方法,可以动态地创建不同类型的对象,而不需要修改客户端的代码。

3.符合开闭原则。

增加新的具体产品时,只需要创建一个新的具体产品类和对应的工厂类即可,不需要修改其他代码。

工厂设计模式的缺点是:1.增加了系统的复杂性。

引入了额外的工厂类和产品类,增加了代码的复杂性和维护成本。

总结起来,工厂设计模式是一种创建对象的设计模式,它将对象的创建逻辑封装在工厂类中,客户端通过工厂类来创建具体对象,从而实现了对象的创建与使用的分离。

它适用于对象的创建逻辑复杂、对象类型不确定或者需要动态创建对象的情况。

这种模式可以提高系统的灵活性和可维护性,但也增加了系统的复杂性。

常见显示器工厂模式

常见显示器工厂模式

常见显示器工厂模式在显示器的使用过程中,有时会遇到图相严重变暗或变亮,扭曲变形,偏移等故障,使用显示器面板上的OSD菜单调整又没有明显效果,这时就会用到工厂模式。

进入工厂模式可以解决的故障类型:1.图像的亮度偏暗,即使把用户模式中的亮度和对比度都调到最大,也无法看清某些内容的细节,特别是在玩游戏时,如果遇到黑暗处时就什么也看不清楚了。

2.图像的左右两边无法调整为垂直,总有很明显的偏差。

3.水平方向的图像宽度变窄,即使把左右宽度调为最大,也不能达到满幅。

也可能是上下之间的宽度不能达到满屏或过大,超出了显示器屏幕之外。

4.水平有变曲,上边或下边不水平有挑角等。

5.图像在某一色温下颜色明显偏向某一种颜色,改变色温时有的色温下图像显示正常。

6.用户模式中的某一菜单功能不能使用,如消磁,锁定键盘等。

7.图像模糊,有时还有字符上下或左右抖动的情况。

8.字符或图标在屏幕上的大小不一致,在有的地方大,而在有的地方小。

9.显示器图像显示正常,但是某一区域有清晰可见的网纹出现。

10.查看显示器的主要性能参数,工作总时间等。

11.改变显示器的节能工作方式,是否打开老化开关,OSD菜单功能选择等。

不过有时候,进入工厂模式也无法进行调整,这个时候只能重写显示器中的存储器内容,需使用专用的编程器进行读写,或者更换存储芯片。

此外,使用工厂模式我们还可以查看显示器已经使用的时间,以鉴别我们的显示器是否为翻新机或样机。

以下是搜集到的部分显示器工厂模式的进入方法(来源于网络,无法保证全部有效):三星显示器三星的工厂菜单中提供了液晶面板的品牌,型号以及使用时间等等。

进入方式是在开机状态下,将OSD菜单中将亮度和对比度值分别调为0,接着进入OSD菜单的“信息”页,按住“SOURCE”键5秒,屏幕中央会出现“SERVICE FUNCTION”菜单。

有些三星的显示器没有SOURCE键,按ENTER键同样可以进入。

飞利浦显示器飞利浦液晶在关机状态下,同时按住“AUTO”和”MENU”键然后开机。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

工厂模式的三种类型:
1抽象工厂模式是所有形态的工厂模式中最为抽
象和最其一般性的。

抽象工厂模式可以向客户端
提供一个接口,使得客户端在不必指定产品的具
体类型的情况下,能够创建多个产品族的产品对
象。

1.抽象工厂(Creator)角色
抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。

2.具体工厂(Concrete Creator)角色
具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。

3.抽象(Product)角色
抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

4.具体产品(Concrete Product)角色
抽象模式所创建的具体实例对象
总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。

2工厂方法模式同样属于类的创建型模式又被称
为多态工厂模式。

工厂方法模式的意义是定义一个创建
产品对象的工厂接口,将实际创建工作推迟到子类当中。

核心工厂类不再负责产品的创建,这样核心类成为一个
抽象工厂角色,仅负责具体工厂子类必须实现的接口,
这样进一步抽象化的好处是使得工厂方法模式可以使系
统在不修改具体工厂角色的情况下引进新的产品。

1.抽象工厂(Creator)角色
工厂方法模式的核心,任何工厂类都必须实现这个接口。

2.具体工厂(Concrete Creator)角色
具体工厂类是抽象工厂的一个实现,负责实例化产品对象。

3.抽象(Product)角色
工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

4.具体产品(Concrete Product)角色
工厂方法模式所创建的具体实例对象
工厂方法模式与简单工厂模式在结构上的不同不是很明显。

工厂方
法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具
体类上。

工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工
厂类都有共同的接口,或者有共同的抽象父类。

当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对
象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也
不需要修改客户端,很好的符合了“开放-封闭”原则。

而简单工厂
模式在添加新产品对象后不得不修改工厂方法,扩展性不好。

工厂方法模式退化后可以演变成简单工厂模式。

3简单工厂模式属于类的创建型模式,又叫做静态
工厂方法模式。

通过专门定义一个类来负责创建
其他类的实例,被创建的实例通常都具有共同的
父类。

1.工厂(Creator)角色
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。

工厂类可以被外界直接调用,创建所需的产品对象。

2.抽象(Product)角色
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

3.具体产品(Concrete Product)角色
简单工厂模式所创建的具体实例对象
在这个模式中,工厂类是整个模式的关键所在。

它包含必要的判断
逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的
对象。

用户在使用时可以直接根据工厂类去创建所需的实例,而无
需了解这些对象是如何创建以及如何组织的。

有利于整个软件体系
结构的优化。

不难发现,简单工厂模式的缺点也正体现在其工厂类上,由于工厂类集中
了所有实例的创建逻辑,所以“高内聚”方面做的并不好。

另外,当系统中的具体产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展
性并不很好。

相关文档
最新文档