23种设计模式
常见的二十三种设计模式

常见的⼆⼗三种设计模式按照⽬的来分,设计模式可以分为创建型模式、结构型模式和⾏为型模式。
创建型模式⽤来处理对象的创建过程;结构型模式⽤来处理类或者对象的组合;⾏为型模式⽤来对类或对象怎样交互和怎样分配职责进⾏描述。
创建型模式⽤来处理对象的创建过程,共以下五种:单例模式(Singleton Pattern)能避免同⼀对象被反复实例化。
⽐如说,访问数据库的连接对象就⽐普通对象实例化的时间要长;WCF中,维护服务器端远程对象的创建等,这类情况,很有必要⽤单例模式进⾏处理对象的实例化。
简单⼯⼚模式通过在⼯⼚类中进⾏判断,然后创建需要的功能类。
优点:不必使⽤具体的功能类去创建该类的实例。
缺点:新增⼀个功能类就需要在⼯⼚类中增加⼀个判断。
⼯⼚⽅法模式(Factory Method Pattern)把简单⼯⼚模式中的⼯⼚类,做了进⼀步的抽象为接⼝或抽象类,给各个功能创建⼀个对应的⼯⼚类,然后在这个⼯⼚类⾥⾯去创建对应的实例。
缺点:当新增⼀个功能类,就需要创建对于的⼯⼚类,相⽐简单⼯⼚模式,免去了判断创建那个具体实例,但会创建过多的类,还不如策略模式。
抽象⼯⼚模式(Abstract Factory Pattern)使⽤该功能类的功能类,利⽤抽象⼯⼚去创建该功能类的实例。
这样的好处在于尽可能的避免去创建功能的实例。
更⽜逼的做法就是使⽤反射去创建这个功能类的实例,在调⽤端就⼀点都不需要知道要去实例化那个具体的功能类。
这当然不是抽象⼯⼚模式独有的。
建造者模式(Builder Pattern)每个对象都具备⾃⼰的功能,但是,它们的创建⽅式却是⼀样的。
这个时候就需要中间这个建造者类来负责功能对象实例的创建。
在调⽤端只需调⽤特定的⽅法即可。
这个和策略模式有点类似。
原型模式(Prototype Pattern)创建好了⼀个实例,然后⽤这个实例,通过克隆⽅式创建另⼀个同类型的实例,⽽不必关⼼这个新实例是如何创建的。
原型模式使⽤时需要注意浅拷贝与深拷贝的问题。
23种设计模式的意图及实用性

一.创建型模式1.单件模式意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。
适用性当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
2.抽象工厂意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用性一个系统要独立于它的产品的创建、组合和表示时。
一个系统要由多个产品系列中的一个来配置时。
当你要强调一系列相关的产品对象的设计以便进行联合使用时。
当你提供一个产品类库,而只想显示它们的接口而不是实现时。
3.建造者模式意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
当构造过程必须允许被构造的对象有不同的表示时。
4.工厂方法模式意图定义一个用于创建对象的接口,让子类决定实例化哪一个类。
Factory Method 使一个类的实例化延迟到其子类。
适用性当一个类不知道它所必须创建的对象的类的时候。
当一个类希望由它的子类来指定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
5.原型模式意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
适用性当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者为了避免创建一个与产品类层次平行的工厂类层次时;或者当一个类的实例只能有几个不同状态组合中的一种时。
建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
二.结构型模式6.适配器模式意图将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适用性你想使用一个已经存在的类,而它的接口不符合你的需求。
你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
23种设计模式记忆 口诀

23种设计模式记忆口诀1.单例模式:独一无二,最重要。
2.工厂模式:制造者,无需说。
3.抽象工厂:一族产品,同根源。
4.建造者模式:一步一步,建造家。
5.原型模式:克隆专家,快捷法。
6.适配器模式:转换者,聪明智。
7.桥接模式:结构优化,灵活性。
8.装饰模式:装饰者,美化家。
9.组合模式:树形结构,组合家。
10.外观模式:微缩封装,简洁家。
11.享元模式:享元工厂,节省家。
12.代理模式:替身幕后,保护家。
13.模板方法:算法继承,不变家。
14.策略模式:行为封装,灵活家。
15.命令模式:命令者,有权家。
16.职责链模式:可扩展,级别性。
17.状态模式:状态管理,干净家。
18.观察者模式:被观察,自主家。
19.中介者模式:中介者,沟通家。
20.迭代器模式:循环选择,简化家。
21.访问者模式:动态添加,扩展家。
22.备忘录模式:状态备份,还原家。
23.解释器模式:解释语言,特殊家。
以上23种设计模式,为了更好地记忆,我把它们组合成了一个口诀:最重要的单例模式,工厂与抽象同皇冠。
建造渐进如养家,克隆是原型美化家。
适配器桥接转化家,组合成树形结构家。
装饰装扮美化家,微缩封装外观家。
享元共用节省家,代理替身保护家。
策略模式灵活家,命令者有权家。
职责链扩展级别性,状态干净管理家。
被观察自主家,中介者沟通家。
循环迭代简化家,访问者动态扩展家。
备忘录变化还原家,解释语言特殊家。
这个口诀是通过把每个模式的主要特点和功能用简洁的语句表达出来,然后通过排列组合的方式形成的。
相信这个口诀会让你更容易地记忆这23种设计模式,并且可以在以后的工作中灵活地运用它们。
二十三种设计模式的通俗理解

二十三种设计模式的通俗理解1、FACTORY 追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。
麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。
消费者任何时候需要某种产品,只需向工厂请求即可。
消费者无须修改就可以接纳新产品。
缺点是当产品修改时,工厂类也要做相应的修改。
如:如何创建及如何向客户端提供。
2、BUILDER MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。
(这一定比美军在伊拉克用的翻译机好卖)建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。
建造模式可以强制实行一种分步骤进行的建造过程。
3、FACTORY METHOD 请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、PROTOTYPE 跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。
(100块钱一份,你要不要)原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。
23种设计模式

新版设计模式手册一.创建型模式1.单件模式意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。
适用性当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
2.抽象工厂意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用性一个系统要独立于它的产品的创建、组合和表示时。
一个系统要由多个产品系列中的一个来配置时。
当你要强调一系列相关的产品对象的设计以便进行联合使用时。
当你提供一个产品类库,而只想显示它们的接口而不是实现时。
3.建造者模式意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
当构造过程必须允许被构造的对象有不同的表示时。
4.工厂方法模式意图定义一个用于创建对象的接口,让子类决定实例化哪一个类。
Factory Method 使一个类的实例化延迟到其子类。
适用性当一个类不知道它所必须创建的对象的类的时候。
当一个类希望由它的子类来指定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
5.原型模式意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
适用性当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者为了避免创建一个与产品类层次平行的工厂类层次时;或者当一个类的实例只能有几个不同状态组合中的一种时。
建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
二.结构型模式6.适配器模式意图将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适用性你想使用一个已经存在的类,而它的接口不符合你的需求。
面向对象设计的23个设计模式详解

面向对象设计的23个设计模式详解面向对象设计是一种广泛应用于软件开发的思想,其核心在于将数据和操作封装在一起形成对象,并通过各种方式进行交互和组合,从而实现复杂的功能。
在这一过程中,设计模式起到了非常重要的作用,可以有效地提高代码的可读性、可维护性和可扩展性。
本文将对23种常见的设计模式进行详解。
一、创建型模式1.简单工厂模式简单工厂模式属于创建型模式,其目的是提供一个工厂类,使得创建对象的过程更加简单。
在这种模式中,使用者只需要提供所需对象的参数,而无需关心对象的具体实现细节。
简单工厂模式适合于对象创建过程较为简单的情况。
2.工厂方法模式工厂方法模式是简单工厂模式的进一步扩展,其核心在于将工厂类进行接口抽象化,使得不同的工厂类可以创建不同的对象实例。
工厂方法模式适合于对象创建过程较为复杂的情况。
它可以为工厂类添加新的产品类型,而不会影响原有的代码。
3.抽象工厂模式抽象工厂模式是工厂方法模式的进一步扩展,其目的是提供一个可以创建一系列相关或者独立的对象的接口。
在抽象工厂模式中,使用者只需要关心所需对象组合的类型,而无需关注对象的具体实现过程。
4.建造者模式建造者模式也是一种创建型模式,其目的在于将复杂对象分解为多个简单的部分,并将其组装起来形成复杂对象实例。
在建造者模式中,使用者只需要关注所需对象以及它们的组合方式,而无需关心对象的具体实现过程。
5.原型模式原型模式是一种基于克隆的创建型模式,其核心在于通过复制现有的对象实例来创建新的对象。
在原型模式中,对象实例的创建过程与对象所包含的状态密切相关。
原型模式适合于创建复杂对象实例,且这些对象实例之间是相对独立的情况。
二、结构型模式6.适配器模式适配器模式是一种结构型模式,其目的在于将一个类的接口转换为另一个类所能使用的接口。
在适配器模式中,使用者可以通过不同的适配器实现对象之间的互相调用。
7.桥接模式桥接模式是一种结构型模式,其目的在于将抽象部分与实现部分相互分离,从而使得两者可以独立变化。
23种基本的设计模式

Abstract Factory:一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
Adapter:将一个类的接口转换成客户希望的另外一个接口。
A d a p t e r模式使得原本由于接口不兼容而不能工作的那些类可以工作。
Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
Builder:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
Chain of Responsibility:为解除请求的者和接收者之间耦合,而使多个对象都有机会处理这个请求。
将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
Command:将一个请求装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
Composite:将对象组合成树形结构以表示“部分-整体”的层次结构。
它使得客户对单个对象和复合对象的使用具有一致性。
Decorator:动态地给一个对象一些额外的职责。
就扩展功能而言,它比生成子类更为灵活。
Facade:为子系统中的一组接口一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
Factory Method:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。
Factory Method使一个类的实例化延迟到其子类。
Flyweight:运用共享技术有效地支持量细粒度的对象。
Interpreter:给定一个语言, 定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。
Iterator:一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
Mediator:用一个中介对象来装一系列的对象交互。
中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
Memento:在不破坏装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
23种设计模式 简单明了

23种设计模式简单明了1. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。
2. 工厂模式(Factory Pattern):定义创建对象的接口,但将实际创建对象的过程推迟到子类中。
3. 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关对象的接口,而无需指定具体的类。
4. 建造者模式(Builder Pattern):将一个复杂对象的创建与表示分离,使同样的构建过程可以创建不同的表示。
5. 原型模式(Prototype Pattern):通过复制现有的对象来创建新对象。
6. 适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另一个接口。
7. 桥接模式(Bridge Pattern):将抽象与实现分离,使它们可以独立变化,从而减少两者之间的耦合。
8. 过滤器模式(Filter Pattern):通过某种条件来过滤一组对象。
9. 组合模式(Composite Pattern):将对象组合成树形结构,以表示 "部分-整体" 的层次结构。
10. 装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责。
11. 外观模式(Facade Pattern):隐藏系统的复杂性,并向客户端提供一个简化的接口。
12. 享元模式(Flyweight Pattern):共享对象,以便有效地支持大量细粒度的对象。
13. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。
14. 责任链模式(Chain of Responsibility Pattern):将请求的发送者和接收者解耦,并让多个对象都有机会处理这个请求。
15. 命令模式(Command Pattern):将请求封装成对象,从而允许使用不同的请求、队列或者日志请求。
16. 解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构图
角色与理解
核心代码
享元模式(FlyweightPattern)(实现对象的复用)
定义
结构图
将系统中细粒度的相同的或者
相似的对象以共享的方式存放
在享元池中供客户端使用。
01
02
角色与理解
03
04
核心代码
代理模式(ProxyPattern)(控制对象的访问)
2014 2015 2016 2017
工厂模式 (Fa ctor yPa t t er n )
简单工厂模式 (SimpleFactor
yPattern)
工厂方法模式 (Factor yM eth
odPattern)
抽象工厂模式 (AbstractFact
or yPa tter n )
简单工厂模式(SimpleFactor yPattern)
04 核心代 码
建造者模式(BuilderPattern)(复杂对象的构建)
定义
结构图
将一个复杂对象的构建与它
的表示分离,使同样的构建 过程可以创建不同的表示
01
02
角色与理解
03
04
核心代码
结构型 (StructuralPatter ns)
适配器模式(AdapterPattern)(不兼容结构的协调)
定义
通过一个代理对象或者占位符来控制对原对象的访问。
结构图
角色与理解
核心代码
行为型 (BehavioralPatte rns)
责任链模式 (ChainOfResponsibilityPatter n)(请求的链式处理)
定义 将请求发送者和请求接受者解
耦,让请求的接受者形成链式操 作,所有人都能够接受接受到请 求,直到有人处理请求。
设计模式原则
迪米特法则(Law of Demeter, LoD )
一个软件实体应当尽可能少地与其他实体发生相互作用。**类与类 之间的耦合度应尽量的低,这样如果类发生变化,影响才会最小。 不要和陌生人说话,只和你的直接朋友通信,直接朋友包含如下: 当前对象本身(this)作为参数的对象成员变量集合成员变量中的 元素创建的对象可以通过使用第三者类来降低两个类的耦合度。
结构图
解释器模式(InterpreterPattern)(树形结构的处理)
1 定义
定义一个语言的文法,并创建一个解释 器去解释该语言中的句子,这里的“语 言”是指使用规定格式和语法的代码。
3 角色与理解
2 结构图 4 核心代码
迭代器模式(IteratorPattern)(遍历聚合对象中的元素)
壹
角色与理解
结构图 核心代码
抽象工厂模式(AbstractFactor yPattern)
1
定义
提供一个创建一系 列相关或者相互依 赖的类的工厂接口, 他包含多个产品类 的工厂方法,及一 个工厂类能够创建
多个产品。
2 结构图
3 角色与理解
4 核心代码
创建型 (Constructio nalPatterns)
设计模式原则
合成复用原则(Composite Reuse Principle, CRP)
尽量使用对象组合,而不是继承来达到复用的目的通过继承来实现复用的问题是 它会破坏封装性,子类能够看到基类的实现细节,自身类通过继承而来的基类方 法是静态的(因为继承的类是确定的),而通过调用成员变量去执行成员变量的 方法是动态的,因为成员变量可以是抽象化的,而实现类可以有很多种,每一种 实现类的功能又不相同,但是他们可以被当作同一类型而被引入。
定义
提供一种方法来访问聚合对 象中的元素,而不用暴露聚 合对象的内部表示,其别名 为游标(cursor)。
叁 角色与理解
贰 结构图 肆 核心代码
式。
结构图
角色与理解
核心代码
组合模式(CompositePattern)(树形结构的处理)
核心代码 角色与理解
47% Option 4
30% Option 3
23% Option 1
56% Option 2
定义
组合多个对象形成树形结构以表 示“整体-部分”的关系的层次结 构。组合模式对叶子节点和容器 节点的处理具有一致性,又称为 整体-部分模式。
23种设计模式
演讲人
2 0 2 5 - 11 - 11
目录
01. 设计模式原则
02.
创建型(ConstructionalPatterns)
03.
结构型(StructuralPatterns)
04.
行为型(BehavioralPatterns)
05. 自由主题
设计模式原则
设计模式原则
开闭原则(Open Close Principle, OCP)
创建型 (ConstructionalP atterns)
创建型(ConstructionalPatterns)
单例模式 (SingletonPattern) (确保对象的唯一性)
01
02
原型模式 (PrototypePatter
n)(对象的克隆)
03
04
工厂模式 ( Fa c tor yPatte r n)
建造者模式 (BuilderPattern) (复杂对象的构建)
创建型(ConstructionalPatterns)
单例模式(SingletonPattern)(确保对象的唯一性)
01
定义
02
角色与 理解
03
核心代 码
单例模式(SingletonPattern)(确保对象的唯一性)
定义
角色与理解
设计模式原则
依赖倒转原则(Dependence Inversion Principle,DIP)
抽象不应该依赖于细节,细节应当依赖于抽 象。换言之,要针对接口编程,而不是针对实现 编程依赖倒转原则要求我们在程序代码中传递参 数时或在关联关系中,尽量引用层次高的抽象层 类,即使用接口和抽象类进行变量类型声明、参 数类型声明、方法返回类型声明,以及数据类型 的转换等,而不要用具体类来做这些事情。在实 现依赖倒转原则时,我们需要针对抽象层编程, 而将具体类的对象通过依赖注入(Dependency Injection, DI)的方式注入到其他对象中,依赖 注入是指当一个对象要与其他对象发生依赖关系 时,通过抽象来注入所依赖的对象。常用的注入 方式有三种,分别是:构造注入,设值注入 (Setter注入)和接口注入。构造注入是指通过 构造函数来传入具体类的对象,设值注入是指通 过Setter方法来传入具体类的对象,而接口注入 是指通过在接口中声明的业务方法来传入具体类 的对象。
依赖倒转原则(Dependence Inversion Principle,DIP)
接口隔离原则(Interface Segregation Principle, ISP)
里氏替换原则(Liskov Substitution Principle,LSP)
单一职能原则(Single Responsibility Principle, SRP)
员变量,引用类型的成员变量没有被复制 深拷贝:当对象被复制时,对象本身、值类型成员变量、引 用类型成员变量都会被复制,原型对象与复制对象完全独立 核心代码
创建型 (ConstructionalPatt erns)
建造者模式(BuilderPattern)(复 杂对象的构建)
01 定义
02 结构图
03 角色与 理解
结构图
角色与理解
核心代码
命令模式(CommandPattern)(请求发送者与请求接收者解耦)
核心代码 角色与理解
47% Option 4
30% Option 3
23% Option 1
56% Option 2
定义
将一个请求封装为一个对象,从 而让我们可用不同的请求对客户 进行参数化;对请求排队或者记 录请求日志,以及支持可撤销的 操作。其别名为动作(Action)模 式 或 事 务 (Tran sact ion) 模式。
结构图
装饰模式(DecoratorPattern)(拓展系统功能)
定义
动态的给一个对象增 加一些职能,相对与 生成子类更加灵活。
结构图
角色与理解
核心代码
注意事项
门面模式(FacadePattern)(子系统的统一入口)
定义
又称为门面模式,为子 系统中一组接口提供一 个统计的入口。外观模 式定义了一个高层接口, 方便了客户端与子系统
确保某个类只有一个实例, 并且自行实例化并向整个 系统提供这个实例,这个 类称为单例类,它提供全
局访问的方法。
单例模式只包含一种角色 那就是单例角色,
Singleton(单例)。 单例模式有单个要点:这 个类只有一个实例它自行 创建这个实例它自行向整
个系统提供这个实例
核心代码
创建型 (Constructio nalPatterns)
1
定义
定义一个工厂类, 并提供一个抽象工 厂方法,该方法通 过传入不同的入参 而制造出特定的产 品,且所有产品具
有共同的父类。
2 结构图
3 角色与理解
4 核心代码
工厂方法模式(Factor yMethodPattern)
定义
定义一个用于创建对象的接口,让子类决定将哪一个产品实例化。工厂 方法模式让一个类的实例化延迟到工厂类的子类。工厂方法模式简称为 工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。
原型模式(PrototypePattern)(对 象的克隆)