23种设计模式通俗理解
23种设计模式
设计模式的分类1.抽象工厂Abstract FACTORY厂模式:客户类和工厂类分开,把各种需要使用到的实例的创建方法统一单独写成抽象类,实现类具体实现创建过程,创建出来的对象类型用接口来表示,抽象工厂可以用在高层类中使用,不用考虑太多具体的创建细节,如何创建由工厂的具体实现去定义。
核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
2.BUILDER建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。
建造模式可以强制实行一种分步骤进行的建造过程。
3.FACTORY METHOD工厂方法模式:用一个方法来创建所需要的所有实例,跟抽象工厂的区别,就是不需要单独写个工厂类,相当于把抽象工厂类里面定义的抽象方法,合并到应用类里面,子类去实现就好了,比抽象工厂更简洁。
4. PROTOTYPE原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。
原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。
缺点是每一个类都必须配备一个克隆方法。
5.SINGLETON单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。
单例模式只应在有真正的“单一实例”的需求时才可使用。
6.ADAPTER适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。
适配类可以根据参数返还一个合适的实例给客户端。
7.BRIDGE桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
详解23种设计模式
详解23种设计模式设计模式(Design Patterns) ⾸先说⼀下我对设计模式的理解,设计模式是⼀种在软件内部优化代码的技巧。
注意,是代码的内部,也就是在⼀个局部范围内优化设计。
这⼀点和软件的架构是完全不同的,软件架构是全局的优化,讲的是怎么对软件进⾏切分以及对切开之后的内容进⾏重组的⼀个过程。
软件的设计模式强调的是代码,软件架构强调的是结构。
在⾯向对象的编程思想中,这就体现在怎么解决类与类之间的关系。
能处理好类与类之间的关系,优化设计就搞好了。
下⾯这段话是软件设计模式的定义: 设计模式(Design pattern)是⼀套被反复使⽤、多数⼈知晓的、经过分类编⽬的、代码设计经验的总结。
使⽤设计模式是为了可重⽤代码、让代码更容易被他⼈理解、保证代码可靠性。
毫⽆疑问,设计模式于⼰于他⼈于系统都是多赢的,设计模式使代码编制真正⼯程化,设计模式是软件⼯程的基⽯,如同⼤厦的⼀块块砖⽯⼀样。
项⽬中合理的运⽤设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每⼀个模式描述了⼀个在我们周围不断重复发⽣的问题,以及该问题的核⼼解决⽅案,这也是它能被⼴泛应⽤的原因。
设计模式是⼀代⼜⼀代的编程⼤师总结出来的,我们应该重视,不能束之⾼阁,应当合理利⽤。
关键是要搞清楚哪种情况⽤哪种设计模式。
⼀、设计模式的分类总体来说设计模式分为三⼤类:创建型模式,共五种:⼯⼚⽅法模式、抽象⼯⼚模式、单例模式、建造者模式、原型模式。
(还有⼀种叫简单⼯⼚模式,是⼯⼚模式的变形,不满⾜单⼀职责,设计不太合理,所以就没列出来)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
⾏为型模式,共⼗⼀种:策略模式、模板⽅法模式、观察者模式、迭代⼦模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
⼆、设计模式的七⼤原则设计模式的七⼤原则堪称经典,这七条原则是我们在设计软件的过程中必须准守的,当然不遵守的话,你的⽼板可能就会“嘿嘿”你,你懂得!这七条原则指导了23种设计模式,可以这么说,23种设计模式就是在这七条原则在不同场景之下的应⽤。
23种设计模式及应用
23种设计模式及应用设计模式是指在软件设计过程中,针对常见问题的解决方案的经验总结。
它们提供了解决特定或常见问题的可重用方案,使得软件设计更加灵活、可扩展和可维护。
1. 创建型模式:- 单例模式:确保一个类只有一个实例,并提供全局访问点。
- 简单工厂模式:通过一个共同的接口创建不同的对象实例。
- 工厂方法模式:定义一个创建对象的接口,由子类决定具体创建哪个对象。
- 抽象工厂模式:提供一个创建一系列相关或互相依赖对象的接口。
- 建造者模式:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
2. 结构型模式:- 适配器模式:将一个类的接口转换为客户端所期待的另一种接口。
- 桥接模式:将抽象部分与它的实现部分分离,使它们可以独立变化。
- 组合模式:将对象组合成树形结构以表示"整体-部分"的层次结构。
- 装饰器模式:动态地给对象添加额外的功能,避免继承带来的类膨胀问题。
- 外观模式:为子系统中一组接口提供一个一致的界面。
3. 行为型模式:- 策略模式:定义一系列算法,将它们封装起来,并使它们可以相互替换。
- 观察者模式:定义对象之间的依赖关系,当对象状态改变时自动通知依赖方。
- 模板方法模式:定义一个操作中的算法骨架,将一些步骤延迟到子类中实现。
- 命令模式:将一个请求封装成一个对象,从而使您可以用不同的请求参数化客户端对象。
- 状态模式:允许对象在其内部状态改变时改变其行为。
4. J2EE模式:- MVC模式:将应用程序划分为三个核心组件:模型、视图和控制器。
- 业务代表模式:将对业务对象的访问和业务逻辑从表示层分离出来。
- 数据访问对象模式:用于将业务逻辑和数据访问逻辑分离。
- 前端控制器模式:通过一个单一的入口点来处理应用程序的所有请求。
- 传输对象模式:用于在客户端和服务器之间传输数据。
5. 并发模式:- 线程池模式:创建一组预先初始化的线程对象来处理任务。
23种设计模式的详解
23种Java设计模式设计模式分两类:创建型模式、行为型模式。
一、创建型模式 :1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。
麦当劳和肯德基就是生产鸡翅的Factory1、工厂模式:客户类和工厂类分开。
消费者任何时候需要某种产品,只需向工厂请求即可。
消费者无须修改就可以接纳新产品。
缺点是当产品修改时,工厂类也要做相应的修改。
如:如何创建及如何向客户端提供。
2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你” builder。
(这一定比美军在伊拉克用的翻译机好卖)2、建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。
建造模式可以强制实行一种分步骤进行的建造过程。
3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
3、工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。
面向对象23种设计模式
面向对象23种设计模式面向对象23种设计模式在面向对象的编程中,设计模式是一种解决问题的通用方案。
设计模式可以帮助开发人员在开发过程中减少代码的冗余和复杂性,并提高代码的可维护性和可重用性。
本文将介绍23种面向对象的设计模式。
1. 工厂方法模式工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但是让子类决定实例化哪个类。
在工厂方法模式中,客户端不需要知道具体的创建逻辑,只需要知道工厂类中定义的接口即可。
2. 抽象工厂模式抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建相关或依赖对象的家族,而不需要指定它们的具体类。
在抽象工厂模式中,客户端不需要知道具体的创建逻辑,只需要知道工厂类中定义的接口即可。
3. 单例模式单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个访问该实例的全局点。
4. 原型模式原型模式是一种创建型设计模式,它允许复制或克隆一个现有的对象,而不必知道其具体实现。
5. 建造者模式建造者模式是一种创建型设计模式,它允许逐步创建复杂的对象,而不必知道其内部实现细节。
6. 适配器模式适配器模式是一种结构型设计模式,它将一个或多个不兼容的类或接口转换为客户端所需的接口。
7. 桥接模式桥接模式是一种结构型设计模式,它将抽象部分与其实现部分分离开来,以便独立地进行修改。
8. 组合模式组合模式是一种结构型设计模式,它将一组对象作为单个对象处理,以便客户端可以以相同的方式处理单个对象和组合对象。
9. 装饰器模式装饰器模式是一种结构型设计模式,它允许向现有对象添加额外的功能,同时不改变其现有的结构。
10. 外观模式外观模式是一种结构型设计模式,它为一组复杂的子系统提供了一个统一的接口,以便于客户端使用。
11. 享元模式享元模式是一种结构型设计模式,它利用共享技术来最小化内存使用,以及提高应用程序的性能。
12. 代理模式代理模式是一种结构型设计模式,它提供了一个代理对象,使得客户端可以通过代理对象间接地访问实际对象。
经典文档-23种设计模式
二十三种设计模式1 引言谈到设计模式,绝对应该一起来说说重构。
重构给我们带来了什么?除了作为对遗留代码的改进的方法,另一大意义在于,可以让我们在写程序的时候可以不需事先考虑太多的代码组织问题,当然这其中也包括了应用模式的问题。
尽管大多数开发者都已经养成了写代码前先从设计开始的习惯,但是,这种程度的设计,涉及到到大局、到总体架构、到主要的模块划分我觉得就够了。
换句话说,这时就能写代码了。
这就得益于重构的思想了。
如果没有重构的思想,有希望获得非常高质量的代码,我们就不得不在开始写代码前考虑更多其实并非非常稳定的代码组织及设计模式的应用问题,那开发效率当然就大打折扣了。
在重构和设计模式的合理应用之下,我们可以相对较早的开始写代码,并在功能尽早实现的同时,不断地通过重构和模式来改善我们的代码质量。
所以,下面的章节中,在谈模式的同时,我也会谈谈关于常用的这些模式的重构成本的理解。
重构成本越高意味着,在遇到类似的问题情形的时候,我们更应该提前考虑应用对应的设计模式,而重构成本比较低则说明,类似的情形下,完全可以先怎么方便,怎么快怎么写,哪怕代码不是很优雅也没关系,回头再重构也很容易。
1 创建型1.1 Factory Method思想:Factory Method的主要思想是使一个类的实例化延迟到其子类。
场景:典型的应用场景如:在某个系统开发的较早阶段,有某些类的实例化过程,实例化方式可能还不是很确定,或者实际实例化的对象(可能是需要对象的某个子类中的一个)不确定,或者比较容易变化。
此时,如果直接将实例化过程写在某个函数中,那么一般就是if-else或select-case代码。
如果,候选项的数目较少、类型基本确定,那么这样的if-else还是可以接受的,一旦情形变得复杂、不确定性增加,更甚至包含这个构造过程的函数所在的类包含几个甚至更多类似的函数时,这样的if-else代码就会变得比较不那么容易维护了。
此时,应用本模式,可以将这种复杂情形隔离开,即将这类不确定的对象的实例化过程延迟到子类。
23种设计模式简要说明
设计模式创建模式:1.factory:分为工厂方法和抽象工厂,将对象的创建和使用区分开,也就是说将创建对象时的一系列初始化工作从构造方法中剥离出来;它们唯一的区别在于在创建类的复杂程度上,抽象工厂指的是将共同部分封装在抽象类中,将不同部分延伸到其子类中去。
2.singleton:确保系统中只有一个实例对象的存在。
3.builder:若一个对象是由许多部件组成的,我们可以将部件的创建和组装过程区分开。
4.prototype:通过原型实例指定创建对象的类型,并且通过拷贝这些原型来创建新的对象。
结构模式:1.flyweight:避免大量拥有相同内容的小类的开销。
2.bridge:将抽象和行为划分开来,使得它们各自独立,但又能够动态的结合。
(继承抽象接口组合行为接口)。
3.decorator:动态的给一个对象添加一些额外的职责。
posite:将对象以树形结构的形式组合起来,已形成部分-到整体的层次结构,使客户端对单个对象和组合对象的使用具有一致性。
5.adapter:将原本两个没有关系的类结合在一起使用(有适配者和被适配者,您可以使用组合模式或者是继承模式)。
6.proxy:为其他对象提供一种代理以控制对这些对象的访问,典型的就是权限控制。
7.facade:为系统中的一组接口提供一个一致的界面。
(典型的就是数据库jdbc的操作)。
行为模式:1.Iterator:Iterator模式可以顺序的访问一个聚集中的元素而不必暴露该聚集的内部情况。
2.Template:定义操作中算法的骨架,将具体操作(一些步骤)的实现延迟到其子类中去。
3.chain of responsibility:通过一系列低耦合的类来试图处理一个request,唯一的共同点就是在它们之间传递request。
4.Memento:通过一个对象拷贝另外一个对象的内容状态,以将该对象恢复到原先保存的状态。
5.mediator:通过一个中介对象来封装一系列对象交互的行为,例如:Android中的Intent。
二十三种设计模式的通俗理解
二十三种设计模式的通俗理解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个设计模式详解
面向对象设计的23个设计模式详解面向对象设计是一种广泛应用于软件开发的思想,其核心在于将数据和操作封装在一起形成对象,并通过各种方式进行交互和组合,从而实现复杂的功能。
在这一过程中,设计模式起到了非常重要的作用,可以有效地提高代码的可读性、可维护性和可扩展性。
本文将对23种常见的设计模式进行详解。
一、创建型模式1.简单工厂模式简单工厂模式属于创建型模式,其目的是提供一个工厂类,使得创建对象的过程更加简单。
在这种模式中,使用者只需要提供所需对象的参数,而无需关心对象的具体实现细节。
简单工厂模式适合于对象创建过程较为简单的情况。
2.工厂方法模式工厂方法模式是简单工厂模式的进一步扩展,其核心在于将工厂类进行接口抽象化,使得不同的工厂类可以创建不同的对象实例。
工厂方法模式适合于对象创建过程较为复杂的情况。
它可以为工厂类添加新的产品类型,而不会影响原有的代码。
3.抽象工厂模式抽象工厂模式是工厂方法模式的进一步扩展,其目的是提供一个可以创建一系列相关或者独立的对象的接口。
在抽象工厂模式中,使用者只需要关心所需对象组合的类型,而无需关注对象的具体实现过程。
4.建造者模式建造者模式也是一种创建型模式,其目的在于将复杂对象分解为多个简单的部分,并将其组装起来形成复杂对象实例。
在建造者模式中,使用者只需要关注所需对象以及它们的组合方式,而无需关心对象的具体实现过程。
5.原型模式原型模式是一种基于克隆的创建型模式,其核心在于通过复制现有的对象实例来创建新的对象。
在原型模式中,对象实例的创建过程与对象所包含的状态密切相关。
原型模式适合于创建复杂对象实例,且这些对象实例之间是相对独立的情况。
二、结构型模式6.适配器模式适配器模式是一种结构型模式,其目的在于将一个类的接口转换为另一个类所能使用的接口。
在适配器模式中,使用者可以通过不同的适配器实现对象之间的互相调用。
7.桥接模式桥接模式是一种结构型模式,其目的在于将抽象部分与实现部分相互分离,从而使得两者可以独立变化。
23种设计模式详解
何谓设计模式
在面向对象程序设计(OOP)过程中, 我们经常会遇到很多重复出现的问题,总 结解决这些问题的成功经验和最佳实践便 形成了设计模式(Design Pattern)。
其核心思想是将可重用的解决方案总 结出来,并分门别类。从而指导设计,减 少代码重复和优化体系结构。
采用设计模式的益处
示例附图
函数变更
AWT List class add(String) remove(String) String[] getSelectedItems()
JFC JList class … … Object[] getSelectedValues()
The Composite Pattern
编程中往往会遇到一个组件既可仅为一个 单独的对象,也可用对象集合来表示的情况。 这便是Composite模式的用武之地。
顾名思义,Adapter就是起到一个中 转桥梁的作用。其思想也很简单,编写 一个实现了统一接口的类,由其与编程 接口相异的类打交道,从而达到屏蔽类 编程细节的目的。
Adapter模式的实现
Adapter模式的实现方案通常有两种: 类继承 以需要适配的类为基础,派生一 个子类,然后在子类中添加新的函数, 实现制订的统一接口。 类联合 创建一个新的类,其中包含需要 适配的类。然后给新类添加函数,实现 制订的统一接口。
Composite模式示例的实现
综合树型结构表示所需函数以及员工的共有信息可以提取出以下抽 象类(或接口):
public abstract class Employee { public float getSalary() {...} public String getName() {...} public float getSalaries() {...} public abstract int getTypeCode();
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):给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
23种设计模式范文
23种设计模式范文设计模式是软件开发中常用的解决方案模式,它们代表了在面对特定问题时的最佳实践和经验总结。
设计模式可以帮助我们更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。
在本文中,我们将介绍23种常用的设计模式,并分别讨论它们的实现原理和在实际开发中的应用场景。
1. 单例模式(Singleton Pattern)单例模式是最简单的设计模式之一,它确保一个类只有一个实例,并提供一个全局访问点。
在实现上,可以通过将构造函数私有化,然后提供一个静态方法返回实例来实现单例。
应用场景:在需要实现全局唯一访问点的场景下,比如线程池、配置管理器等。
2. 工厂模式(Factory Pattern)工厂模式是用来创建对象的一种模式,它将对象的创建和实现分离,使得代码更易于维护和扩展。
工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式等几种不同的变体。
应用场景:在需要根据不同条件创建不同对象的场景下,比如数据库连接、日志记录等。
3. 抽象工厂模式(Abstract Factory Pattern)抽象工厂模式是工厂模式的一种扩展,它提供一个创建一系列相关或相互依赖对象的接口,而无需指定实际的类。
抽象工厂模式将一组工厂类封装起来,使其可以交换或者替换。
应用场景:在需要创建一组相关对象(如界面主题、操作系统等)并且需要保持一致性的场景下。
4. 建造者模式(Builder Pattern)建造者模式是用来生成复杂对象的一种模式,它将对象的构建与其表现分离,采用逐步构建的方式生成对象,可以让客户端不需要知道具体的构建细节。
应用场景:在构造过程比较复杂,需要多个组件协同工作的场景下,比如构建复杂的UI界面。
5. 原型模式(Prototype Pattern)原型模式是用来克隆对象的一种模式,它通过复制已有对象的原型来创建新的对象,避免了通过构造函数创建对象和初始化成员变量的重复过程。
应用场景:在需要创建大量相似对象或者初始化成本较高的对象时,可以使用原型模式。
23种设计模式 详解
23种设计模式详解设计模式是指面向对象编程中,经过多次验证、被广泛接受的代码实现方法。
这些设计模式可以帮助开发者更快地解决问题,提高代码的可读性、可维护性、可扩展性。
目前,常用的设计模式有23种。
下面,我们来详细介绍一下这23种设计模式。
1. 单例模式(Singleton)单例模式是一种只允许生成一个实例的模式。
在实例化对象时,单例模式的生成过程比较特殊,需要先判断该类是否已经实例化过,如果已经实例化,则直接返回已有的实例对象,否则再进行实例化。
2. 工厂模式(Factory)工厂模式是一种生产对象实例的设计模式。
它将对象实例的生成过程封装在一个工厂类中,客户端需要对象时,只需要调用工厂类中对应的方法即可。
3. 抽象工厂模式(Abstract Factory)抽象工厂模式是一种扩展了工厂模式的模式。
它可以生成一系列相关或相互依赖的对象实例。
具体实现时,通常需要定义一个抽象工厂类和一些具体工厂类,来生产各种相关的对象实例。
4. 建造者模式(Builder)建造者模式是一种用于构建复杂对象的模式。
它将一个复杂对象的构建过程分解成多个简单的步骤,然后通过一个指挥者来管理这些步骤的执行,最终构建出一个复杂的对象。
5. 原型模式(Prototype)原型模式是一种通过复制已有对象来创建新对象的模式。
一般来说,系统中的对象包含大量相同或相似的部分,通过复制对象可以帮助我们节省生成对象的时间和资源。
6. 适配器模式(Adapter)适配器模式是一种将不兼容接口转换为兼容接口的模式。
具体实现时,需要定义一个适配器类,该类实现了客户端所期望的接口,而且还包装了原有不兼容的接口,使其能够兼容客户端期望的接口。
7. 桥接模式(Bridge)桥接模式是一种将抽象部分与其实现部分分离开来的模式。
具体实现时,需要定义抽象部分和实现部分的接口,然后定义一个桥接类,将抽象部分和实现部分联系起来。
8. 组合模式(Composite)组合模式是一种将具有相同属性和方法的对象组合成树形结构的模式。
23种设计模式
23种设计模式设计模式主要分为三⼤类:创建型、结构型、⾏为型创建型创建型模式简单来说就是⽤来创建对象的。
⼀共有五种:单例模式、建造者模式、⼯⼚⽅法模式、抽象⼯⼚模式、原型模式。
单例模式:确保某⼀个类只有⼀个实例,并且提供⼀个全局访问点。
建造者模式:⽤来创建复杂的复合对象。
⼯⼚⽅法模式:让⼦类来决定要创建哪个对象。
抽象⼯⼚模式:创建多个产品族中的产品对象。
原型模式:通过复制原型来创建新对象。
结构型结构型模式主要是⽤于处理类或者对象的组合。
⼀共有七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式代理模式:控制客户端对对象的访问。
组合模式:将整体与局部(树形结构)进⾏递归组合,让客户端能够以⼀种的⽅式对其进⾏处理。
适配器模式:将原来不兼容的两个类融合在⼀起。
装饰者模式:为对象添加新功能。
享元模式:使⽤对象池来减少重复对象的创建。
外观模式:对外提供⼀个统⼀的接⼝⽤来访问⼦系统。
桥接模式:将两个能够独⽴变化的部分分离开来。
⾏为型⾏为型模式主要是描述类或者对象是怎样交互和怎样分配职责的。
⼀共有⼗⼀种:策略模式、模板⽅法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式策略模式:封装不同的算法,算法之间能互相替换。
状态模式:根据不同的状态做出不同的⾏为。
责任连模式:将事件沿着链去处理。
观察者模式:状态发⽣改变时通知观察者,⼀对多的关系。
模板⽅法模式:定义⼀套流程模板,根据需要实现模板中的操作。
迭代器模式:提供⼀种⽅法顺序访问⼀个聚合对象中的各个元素。
迭代器模式:保存对象的状态,在需要时进⾏恢复。
访问者模式:稳定数据结构中,定义新的操作⾏为。
中介者模式:将⽹状结构转变为星型结构,所有⾏为都通过中介。
解释器模式:定义语法,并对其进⾏解释。
命令模式:将请求封装成命令,并记录下来,能够撤销与重做。
设计模式-23种设计模式整体介绍及应用场景、七大设计原则总结
设计模式-23种设计模式整体介绍及应⽤场景、七⼤设计原则总结对象的⼀、创建型模式:都是⽤来帮助我们创建对象的!(关注(关注对象的创建过程))创建过程模式1.单例单例模式保证⼀个类只有⼀个实例,并且提供⼀个访问该实例的全局访问点。
模式("Gof book"中把⼯⼚⽅法与抽象⼯⼚分为两种模式,所以创建型模式共为⼯⼚模式2.⼯⼚五种,这⾥只是为了⽅便整理,合在了⼯⼚模式中)-简单⼯⼚模式⽤来⽣产同⼀等级结构的任意产品。
(对于增加新的产品,需要修改已有代码)-⼯⼚⽅法模式⽤来⽣成同⼀等级结构中的固定产品。
(⽀持增加任意产品)-抽象⼯⼚模式⽤来⽣产不同产品族的全部产品。
(对于增加新的产品,⽆能为⼒,⽀持增加产品族)模式3.建造者建造者模式分离了对象⼦组件的单独构造(由Builder来负责)和装配(由Director负责),从⽽可以构造出复杂的对象。
模式原型模式4.原型通过new产⽣⼀个对象需要⾮常繁琐的数据准备或访问权限,则可以使⽤原型模式。
耦合,从⽽可以松耦合,从⽽可以扩⼤扩⼤结构上实现上实现松⼆、结构型模式:是从程序的、结构型模式:是从程序的结构对象和和类的组织)类的组织)(关注对象解决更⼤的问题。
(关注整体的类结构,⽤来整体的类结构,⽤来解决更⼤的问题。
模式1.适配器适配器模式⼯作中的场景:经常⽤来做旧系统改造和升级;如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要的,但是不幸的是,事实却是维护⼀个系统的代价往往是开发⼀个系统的数倍。
学习中见过的场景:java.io.InputStreamReader(InputStream); java.io.OutpuStreamWriter(OutputStream)模式2.代理代理模式核⼼作⽤:通过代理,控制对对象的访问!可以详细控制访问某个(某类)对象的⽅法,在调⽤这个⽅法前做前置处理,调⽤这个⽅法后做后置处理。
(即:AOP的微观实现!)AOP(Aspect Oriented Programming⾯向切⾯编程)的核⼼实现机制!开发框架中应⽤场景:structs2中拦截器的实现;数据库连接池关闭处理;Hibernate中延时加载的实现;mybatis中实现拦截器插件;AspectJ的实现;spring中AOP的实现(⽇志拦截,声明式事务处理);web service;RMI远程⽅法调⽤模式桥接模式3.桥接实际开发中应⽤场景:JDBC驱动程序;AWT中的Peer架构;银⾏⽇志管理:格式分类:操作⽇志、交易⽇志、异常⽇志距离分类:本地记录⽇志、异地记录⽇志⼈⼒资源系统中的奖⾦计算模块:奖⾦分类:个⼈奖⾦、团体奖⾦、激励奖⾦。
java23种设计模式及其应用场景
创建型模式•单例模式(Singleton):确保一个类只有一个实例。
–应用场景:数据库连接池、日志记录、缓存系统。
•工厂方法模式(Factory Method):定义一个创建对象的接口,但让子类决定实例化哪个类。
–应用场景:提供创建对象的灵活性,允许在不改变代码的情况下更换创建逻辑。
•抽象工厂模式(Abstract Factory):提供一个创建一系列相关或依赖对象的接口,而无需指定具体的类。
–应用场景:创建复杂的对象结构,需要保持多个对象之间的一致性。
•建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使其能够一步一步创建。
–应用场景:创建复杂的对象,需要自定义不同的配置或属性。
•原型模式(Prototype):通过复制一个现有的对象来创建新的对象。
–应用场景:创建大量相似对象时,避免重复创建的开销。
结构型模式•适配器模式(Adapter):将一个类的接口转换成另一个类所期望的接口。
–应用场景:将不兼容的类或系统集成在一起。
•桥接模式(Bridge):将抽象部分与实现部分解耦,使它们可以独立变化。
–应用场景:当需要在抽象层和实现层之间引入灵活性时。
•组合模式(Composite):将对象组织成树形结构,以便以类似的方式处理单个对象和组合对象。
–应用场景:表示部分与整体之间的层次关系。
•装饰器模式(Decorator):在不改变对象自身的情况下,向对象添加新的功能。
–应用场景:向对象添加可选项功能,避免创建新的子类。
•外观模式(Facade):提供一个统一的界面来访问一个子系统,隐藏其内部复杂性。
–应用场景:简化对复杂系统的访问,降低客户端与子系统之间的耦合。
•享元模式(Flyweight):使用共享的对象来减少内存开销和对象数量。
–应用场景:需要创建大量相同或相似对象时。
•代理模式(Proxy):为另一个对象提供一个代理或替身,以便控制对该对象的访问。
–应用场景:为对象添加额外的功能,如访问控制、缓存、日志记录。
软件设计常见的23种设计模式
软件设计常见的23种设计模式 在现代软件开发当中,设计模式起到⾄关重要的作⽤。
尤其是⾃从⾯向对象的语⾔普遍使⽤以后,促成了团队合作设计的热潮,⽽在此时,没有⼀个好的设计模式,软件设计⼏乎成了不可能完成的任务。
⼀般模式有4个基本要素:模式名称(pattern name)、问题(problem)、解决⽅案(solution)、效果(consequences)。
常见23种模式概述: 1)抽象⼯⼚模式(Abstract Factory):提供⼀个创建⼀系列相关或相互依赖对象的接⼝,⽽⽆需指定它们具体的类。
2)适配器模式(Adapter):将⼀个类的接⼝转换成客户希望的另外⼀个接⼝。
适配器模式使得原本由于接⼝不兼容⽽不能⼀起⼯作的类可以⼀起⼯作。
3)桥梁模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独⽴地变化。
4)建造模式(Builder):将⼀个复杂对象的构建与它的表⽰分离,使同样的构建过程可以创建不同的表⽰。
5)责任链模式(Chain of Responsibility):为解除请求的发送者和接收者之间耦合,⽽使多个对象都有机会处理这个请求。
将这些对象连成⼀条链,并沿着这条链传递该请求,直到有⼀个对象处理它。
6)命令模式(Command):将⼀个请求封装为⼀个对象,从⽽可⽤不同的请求对客户进⾏参数化;对请求排队或记录请求⽇志,以及⽀持可取消的操作。
7)合成模式(Composite):将对象组合成树形结构以表⽰“部分-整体”的层次结构。
它使得客户对单个对象和复合对象的使⽤具有⼀致性。
8)装饰模式(Decorator):动态地给⼀个对象添加⼀些额外的职责。
就扩展功能⽽⾔,它能⽣成⼦类的⽅式更为灵活。
9)门⾯模式(Facade):为⼦系统中的⼀组接⼝提供⼀个⼀致的界⾯,门⾯模式定义了⼀个⾼层接⼝,这个接⼝使得这⼀⼦系统更加容易使⽤。
10)⼯⼚⽅法(Factory Method):定义⼀个⽤于创建对象的接⼝,让⼦类决定将哪⼀个类实例化。
23种设计模式分类
23种设计模式分类设计模式是软件开发中常用的经验总结和最佳实践的整理,可以帮助开发人员更高效、更可靠地构建软件系统。
根据《设计模式》一书的分类,设计模式可以分为23种不同的类型,每种类型都有其特定的目的和用途。
1. 创建型模式(Creational Patterns)- 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。
- 工厂方法模式(Factory Method Pattern):定义一个创建对象的接口,但由子类决定实例化哪个类。
- 抽象工厂模式(Abstract Factory Pattern):提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
- 建造者模式(Builder Pattern):将一个复杂对象的构建与其表示分离,使同样的构建过程可以创建不同的表示。
- 原型模式(Prototype Pattern):通过复制现有对象来创建新对象,而不是通过实例化类。
2. 结构型模式(Structural Patterns)- 适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另一个接口。
- 桥接模式(Bridge Pattern):将抽象和实现部分分离,使它们可以独立变化。
- 装饰器模式(Decorator Pattern):动态地为对象添加额外的职责。
- 外观模式(Facade Pattern):提供了一个统一的接口,用于访问子系统中的一群接口。
- 享元模式(Flyweight Pattern):通过共享模式来减少创建的对象数量,以减少内存占用。
- 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。
3. 行为型模式(Behavioral Patterns)- 责任链模式(Chain of Responsibility Pattern):通过一条链传递请求,直到找到能够处理它的对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、FACTORY追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。
麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。
消费者任何时候需要某种产品,只需向工厂请求即可。
消费者无须修改就可以接纳新产品。
缺点是当产品修改时,工厂类也要做相应的修改。
如:如何创建及如何向客户端提供。
2、BUILDERMM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。
(这一定比美军在伊拉克用的翻译机好卖)建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。
建造模式可以强制实行一种分步骤进行的建造过程。
3、FACTORY METHOD请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM 直接跟服务员说就行了。
工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、PROTOTYPE跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。
(100块钱一份,你要不要)原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。
原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。
缺点是每一个类都必须配备一个克隆方法。
5、SINGLETON俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事) 单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。
单例模式只应在有真正的“单一实例”的需求时才可使用。
[b:9ceca65206]结构型模式[/b:9ceca65206]6、ADAPTER在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我) 适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。
适配类可以根据参数返还一个合适的实例给客户端。
7、BRIDGE早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。
不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
8、COMPOSITEMary今天过生日。
“我过生日,你要送我一件礼物。
”“嗯,好吧,去商店,你自己挑。
”“这件T恤挺漂亮,买,这条裙子好看,买,这个包也不错,买。
”“喂,买了三件了呀,我只答应送一件礼物的哦。
”“什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻烦你包起来。
”“……”,MM都会用Composite模式了,你会了没有?合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。
合成模式就是一个处理对象的树结构的模式。
合成模式把部分与整体的关系用树结构表示出来。
合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。
9、DECORATORMary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的的礼物,就是爱你的Fita”,再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦),再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……,我们都是Decorator,最终都在修饰我这个人呀,怎么样,看懂了吗?装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。
动态给一个对象增加功能,这些功能可以再动态的撤消。
增加由一些基本功能的排列组合而产生的非常大量的功能。
10、FACADE我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。
幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样MM也可以用这个相机给我拍张照片了。
门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。
门面模式提供一个高层次的接口,使得子系统更易于使用。
每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。
但整个系统可以有多个门面类。
11、FLYWEIGHT每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了,再不用一个字一个字敲了。
共享的句子就是Flyweight,MM的名字就是提取出来的外部特征,根据上下文情况使用。
享元模式:FLYWEIGHT 在拳击比赛中指最轻量级。
享元模式以共享的方式高效的支持大量的细粒度对象。
享元模式能做到共享的关键是区分内蕴状态和外蕴状态。
内蕴状态存储在享元内部,不会随环境的改变而有所不同。
外蕴状态是随环境的改变而改变的。
外蕴状态不能影响内蕴状态,它们是相互独立的。
将可以共享的状态和不可以共享的状态从常规类中区分开来,将不可以共享的状态从类里剔除出去。
客户端不可以直接创建被共享的对象,而应当使用一个工厂对象负责创建被共享的对象。
享元模式大幅度的降低内存中对象的数量。
12、PROXY跟MM在网上聊天,一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?”这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些话都设置好了自己的回答,接收到其他的话时再通知我回答,怎么样,酷吧。
代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。
代理就是一个人或一个机构代表另一个人或者一个机构采取行动。
某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。
客户端分辨不出代理主题对象与真实主题对象。
代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。
[b:9ceca65206]行为模式[/b:9ceca65206]13、CHAIN OF RESPONSIBLEITY晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了,听说是个老处女呀,快跑! 责任链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条链。
请求在这个链上传递,直到链上的某一个对象决定处理此请求。
客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。
处理者有两个选择:承担责任或者把责任推给下家。
一个请求可以最终不被任何接收端对象所接受。
14、COMMAND俺有一个MM家里管得特别严,没法见面,只好借助于她弟弟在我们俩之间传送信息,她对我有什么指示,就写一张纸条让她弟弟带给我。
这不,她弟弟又传送过来一个COMMAND,为了感谢他,我请他吃了碗杂酱面,哪知道他说:“我同时给我姐姐三个男朋友送COMMAND,就数你最小气,才请我吃面。
”,命令模式:命令模式把一个请求或者操作封装到一个对象中。
命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。
命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。
系统支持命令的撤消。
15、INTERPRETER俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、去看电影的方法等等,跟MM约会时,只要做一个Interpreter,照着上面的脚本执行就可以了。
解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。
客户端可以使用这个解释器来解释这个语言中的句子。
解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。
在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。
在解释器模式中需要定义一个代表文法的命令类的等级结构,也就是一系列的组合规则。
每一个命令对象都有一个解释方法,代表对命令对象的解释。
命令对象的等级结构中的对象的任何排列组合都是一个语言。
16、ITERATOR我爱上了Mary,不顾一切的向她求婚。
Mary:“想要我跟你结婚,得答应我的条件”我:“什么条件我都答应,你说吧” Mary:“我看上了那个一克拉的钻石”我:“我买,我买,还有吗?” Mary:“我看上了湖边的那栋别墅”我:“我买,我买,还有吗?” Mary:“我看上那辆法拉利跑车”我脑袋嗡的一声,坐在椅子上,一咬牙:“我买,我买,还有吗?”……迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。
多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。
迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。
迭代子模式简化了聚集的界面。
每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。
迭代算法可以独立于聚集角色变化。