1.AbstractFactory
AbstractFactory意味着具体的Factory实现有多种,但创建方法都是一致的,最终的结果是每个Factory实现能够生产出一套具体的实例。
以一汽大众为例,它下面有多条生产线,比如高尔夫,迈腾,宝来等等,每辆车都要生产车门,座椅,底盘,等等部件。AbstractFactory封装生产这些部件的行为,而具体的生产线就是一个Factory实例,分别执行这些行为。
AbstractFactory很多情况下和FactoryMethod结合使用。
2.Adapter
Adapter一般用在需要转换行为或者数据格式的场景上,其本身持有被调用的实例,开放一些方法供调用者,并且在这些方法中做一些数据转换或者其他的事情。
以手机充电为例,家用电220v交流电,直接给手机充不行,我们一般会有一个带变压器的充电器,它将220v交流电转换成了符合手机充电电压的直流电给手机,这个带变压器的充电器就相当于Adapter,它持有220v的交流电实例,而调用方就是手机。
3.Bridge
Bridge模式意在将抽象和实现分离,抽象的实现会持有一个具体执行者的实例,并且这个实例是可变的,当调用方调用抽象的方法时,抽象实现会执行当前具体执行者对应的方法。这个实际上是将原本抽象与具体执行者的继承关系分解成了聚合关系(持有执行者实例),具体执行者的扩展和抽象没有了强关联。
4.Builder
Builder模式主要用在复杂对象的构建上,接口封装构建每一个部分的方法(当然也可以只有一个方法),并且提供一个返回最终构建完成对象的方法。一个标准Builder会持有被构建的对象实例。
5.ChainOfResponsibility
ChainOfResponsibility将行为分解成一个个Handler,每一个Handler会针对数据执行自己的行为,并且将处理后的数据向下一个Handler传递,直到完成。
6.Command
Command模式根据具体的指令,选择适当的行为进行触发,行为封装成一个个Command。
Command模式和Observer模式有点像。
7.Composite
Composite模式中,各个对象都会有实现相同的接口,但是不同对象按照自己的角色实现不同的方法以及在相同的方法中实现不同的逻辑。
以构建一颗树为例,抽象为Node,里面定义有getChildren和getParent方法和display方法,root节点getParent返回空,leaf节点getChildren为空,branch节点两个方法都实现。root节点和branch节点display方法中除了打印自身值同时调用children的display方法,leaf节点只要打印自身的值即可。
8.Decorator
Decorator中,相同一组的对象有相同的行为定义,并且从低向上,低一级的对象持有上上一级的对象,每一级在相同行为中执行自己的方法,并且调用上一级的方法。调用者越调用低级的对象行为,具有越丰富的特性。这个模式和ChainOfResponsibility的区别在于后者会对数据进行挑选处理,而前者进行一级一级包装完全是为了添加上每一级的行为和数据。
9.Façade
Façade往往用在后端有很多复杂而分散的行为定义并且避免外部调用方直接调用分散在多个类里面的行为的场景下,它统一使用一个(或者几个明确的)Facade类封装后端所有的行为,façade类里面持有和管理后端行为的实例。
10.FactoryMethod
创建不同具体种类的实例,实例源于相同接口定义。比如生产高尔夫和迈腾的车门分别属于不同的factory,但是这两种车门都是车门的一种。
11.Flyweight
Flyweight模式就是创建和缓存对象实例。需要有返回具体某一个实例的方法。
12.Interpreter
Interpreter 模式定义一组解释器,这些解释器具有相同的行为定义,进行不同的逻辑执行,应对相同类型的数据。主要是将数据和行为分离,数据可以按照自己的接口定义变化,执行行为可以单独扩展。
13.Iterator
Iterator模式主要是通过一个相同的迭代接口(比如定义了next,isDone,currentItem,first等方法)对既有的容器进行遍历等操作。主要避免了让调用方直接调用各种各样容器的遍历方法(比如数组和ArrayList的遍历区别),以至于后续变动容器种类必须动调用代码。迭代接口的实现一般持有容器的实例,通过调用容器的getCount,get(index)等方法实现接口里面定义的遍历方法。
14.Mediator
Mediator模式主要用在多对多互相调用(调用方法一致)的场景上。Mediator实现类持有所有这些对象实例并且知道相互调用逻辑,当一个对象的方法被调用时,改对象直接调用Mediator的中介方法,中介方法根据相互调用逻辑,调用对应对象的响应方法。
线上聊天就是一个很好的案例,当两个人(比如A,B)建立聊天开始时,生成一个Mediator,A想发送MSG1给B,它直接把MSG1发给Mediator的中介方法,这个方法中将MSG1发送给除A本人外的其他人,也就是B,B收到消息。多人聊天也一样。
15.Memento
Memento模式,也称为备忘录模式,作用是保存对象的状态,并在需要的时候恢复对象的状态。这个模式相对比较简单,它有一个Originator(原生者),就是需要被保存状态以便恢复的那个对象;一个Memento对象,这个对象主要是保存原生者的状态,并在适当的时间恢复到原生者里去。而这个适当的时间就是由CareTaker(管理者)来决定的。
在现实中的应用最常见的就是实现系统的Undo操作了。
16.Observer
Observer模式中,被观察的对象中会注册一个或者多个Observer,当被观察对象中发生行为时,对应注册的Observer会被依次调用。这个模式和Command模式有点像。
17.Prototype
原型模式主要是为了创建copy一个对象并且带有其数据,并且隐藏其中拷贝的细节。原型实现类自己带有自我复制的方法。
18.Proxy
Proxy持有被代理类的实例,并且实现了和被代理类相同的接口方法。调用方执行的时候,直接调用Proxy相应的接口方法,而Proxy则会在这个方法中加入一些自己的逻辑,比如打日志之类的事情,当然会调用持有实例的对应方法。
19.Singleton
单例的类将自己的构造方法设成了private,自己持有自己的实例,并且对外提供一个方法返回持有的实例,所以这个实例一直是相同的。
20.State
State模式中,宿主持有一个State实例,并且定义一些行为,State实例持有对应的数据和方法。当宿主的行为被调用时,宿主会主动调用State实例对应的方法进行具体的数据操作,而State实例在操作完成后会检查当前的数据是否满足状态变更条件,如果满足,主动创建另外一个对应State实例,并且将这个实例设为宿主新的State实例,自己消亡。这样就达到了状态的变迁。
21.Strategy
Strategy的各个实现类定义有相同的方法,做出不同逻辑行为。业务实例根据不同的条件持有不同的Strategy实现类实例,被调用方法时,业务实例直接调用持有的Strategy实例中的方法。
22.TemplateMethod
抽象类定义几个抽象行为方法,并且定义一个方法进行这些抽象方法的调用,子类只要实现这些抽象方法即可。即实现了各个行为的调用顺序,开放各个行为的具体实现。
23.Visitor
Visitor模式中,被访问对象accept一个特定visitor,并且调用这个visitor相应的方法。由被访问对象决定具体执行那些行为并且将自身数据暴露给这个方法,visitor本身只是定义了一系列的行为,它无法决定到底调用哪个方法。
分享到:
相关推荐
设计模式是软件工程中的宝贵经验总结,是解决常见设计问题的模板或蓝图。在这个项目中,我们将使用这些模式来构建一个功能完善的线上手机预购系统,该系统包括用户注册、商品浏览、购物车管理、订单处理、支付接口等...
本资源摘要信息将对协同办公项目的实施总结进行详细的知识点生成,以便更好地理解项目的需求概述、功能设计、技术特性、项目管理过程总结和项目效果分析等方面的内容。 需求概述 协同办公系统需将各种个人办公应用...
如何设计一套有效的经销商激励政策,从而加强双方的合作紧密度,提高经销商的销售积极性,以及稳定销售渠道,是每个企业都需要面对的课题。本文档提出的经销商激励政策方案,旨在通过一系列具体措施,改善现有的松散...
- **广告制作与评估**:设计广告文案,评估广告效果,与外部广告公司合作,同时鼓励内部创意。 - **促销活动管理**:编制促销预算,组织并评估活动效果,改进促销策略。 - **市场调研与信息收集**:未来工作需要...
小学综合实践活动是对传统教学模式的一种创新,旨在提升学生的实践能力和综合素质。这种活动是以解决问题为导向,强调在实际操作...通过不断反思和完善,我们有理由相信这种教学模式将在未来的教育领域发挥更大的作用。
总结而言,扑克牌模式识别系统是一个将图像处理、模式识别和计算机视觉技术相结合的综合性项目。其设计与实现不仅需要深厚的理论基础,还需要创新和实践经验。随着相关技术的不断发展和完善,这类系统将在未来拥有...
总结来说,“漂亮功能完善的记事本”无疑是一款集美观、实用于一体的优秀记事本软件,它的多样性和易用性使其在同类产品中脱颖而出。无论你是学生、上班族还是自由职业者,这款记事本都能成为你日常生活和工作中的...
本文档是一个关于软件工程实习项目的总结,主要涉及开发一个C/S模式下的网络游戏平台,目标是构建能提供至少两种游戏的平台,并具备用户账户管理、游戏数据交换、文本通信等功能。 项目启动阶段,首先明确了团队...
总结而言,微能量采集技术和节能模式设计的结合,为电子设备提供了一种自给自足、绿色可持续的能源解决方案。这种创新的方法不仅减少了对外部电源的依赖,也减少了废弃电池对环境的影响,符合现代社会对节能减排和可...
3. 垃圾分类意识的培养需要时间,前端投放效果尚待提高,配套政策需更加完善并得到有效执行。 针对以上情况,**市2020年的工作部署将以基层责任落实为核心,优化考核机制,强化宣传教育,加强常态执法,以实现垃圾...
然而,我们也意识到存在的问题,如学科教学模式尚待完善,教学时间不足导致课程未能按期完成,以及部分学生对信息技术学习的畏难情绪。因此,我们建议未来能按照课程标准增加教学课时,以确保教学目标的达成,并鼓励...
总结来说,敏捷项目管理模式以灵活、迭代和以人为本的方式管理项目,鼓励团队自我组织和适应变化,以实现更高的项目成功率和客户价值。对于项目经理来说,理解和掌握敏捷方法是提升项目管理能力的重要一步。
本文旨在探讨一种基于Web的网上图书订购系统的设计与实现方案,该系统采用J2EE技术框架,充分利用B/S模式的优势,通过MVC设计模式实现了高效的数据处理和用户交互。 #### 二、关键技术解析 ##### 1. J2EE技术框架 ...
学生应当记录关键信息和未能即时理解的内容,以待课后解决,而教师在这个过程中需要不断反思和总结如何激发学生的积极性,以及如何设计更加高效的教学活动。 作业是检验学生学习成果的重要手段,它不仅是对知识掌握...
2. **RESTful API**:一种基于HTTP协议的标准API设计模式,强调资源的表述性和状态转换,广泛应用于现代Web服务的开发中。 3. **下游采购单元**:本文档中的特定术语,指需要通过API接入企业系统以获取数据或执行...
在模式识别中,通常会将待识别的对象称为模式(pattern)。这些模式可以是声音、图像、文本甚至是行为模式。模式识别的目标就是通过对这些模式的学习和分析,实现对未知模式的有效识别。 #### 分类 模式识别根据识别...
- **工作流程中存在的不足**:流程设计不够完善,监管不够严格,影响了工作效率。 - **员工职业素养待提高**:部分员工的职业素养不足,专业技能欠缺,团队协作能力不强,这些都直接影响了工作的效率和效果。 ### ...
最后,在总结部分,对整个论文及设计过程进行总结,指出了系统设计过程中存在的不足和待完善的地方。 本系统的设计和实现,对于微信小程序校园失物招领管理的发展具有重要的意义。通过本系统的设计和实现,可以提高...
未来工作中,学校将继续加强辅导员队伍建设,完善少先队活动内容和形式,同时针对存在的不足,不断探索和创新,努力形成更有成效、更具特色的少先队工作模式。通过这些举措,学校希望培养出更多德智体美劳全面发展的...
3. **安全保障**:为了保障交易安全,猪八戒网实施了 escrow 服务,即买方将款项托管在平台,待项目完成后才会转交给卖方,降低了交易风险。 4. **评价系统**:平台设有严格的评价机制,买卖双方可以对交易进行评价...