文档介绍:该【24种设计模式的定义和使用场合 】是由【书犹药也】上传分享,文档一共【9】页,该文档可以免费在线阅读,需要了解更多关于【24种设计模式的定义和使用场合 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。(Creational):
简朴工厂模式(simpleFactory)发音:['simpl] ['fækt(ə)rɪ]
ﻩ定义:
提供一种创立对象实例的功能,而不必关怀其具体实现.被创立实例的类型可以是接口,抽象类,也可以是具体的类.
1.抽象工厂(AbstractFactory)发音: ['æbstrækt]
ﻩ定义:
提供一种创立一系列有关或互相依赖对象的接口,而无需指定她们具体的类.
ﻩ使用场合:
1.如果但愿一种系统独立于它的产品的创立,组合和表达的时候,换句话书,但愿一种系统只是懂得产品的接口,而不关怀实现的时候.
ﻩ2.,就是可以,就是可以动态地切换产品簇的时候.
,以便联合使用她们的时候
(Builder)发音: ['bɪldə]
ﻩ定义:
ﻩ将复杂对象的构建与它的表达分离,使得同样的构建过程可以创立不同的表达.
ﻩ使用场合:
ﻩ1.如果创立对象的算法,应当独立于该对象的构成部分以及它们的装配方式时
(Factory Method)
ﻩ定义:
ﻩ为创立对象定义一种接口,.
ﻩ使用场景:
,只关怀该接口所提供的功能.
,例如需要初始化其她关联的资源类,读取配备文献等.
,
ﻩ4.不但愿给客户程序暴露过多的此类的内部构造,隐藏这些细节可以减少耦合度.
,例如缓存大对象或者初始化比较耗时的对象.
(Prototype Method)发音: ['prəʊtətaɪp]
ﻩ定义:
ﻩ使用原形实例指定将要创立的对象类型,通过复制这个实例创立新的对象.
ﻩ应用场合:
ﻩ1.如果一种系统想要独立于它想要使用的对象时,可以使用原型模式,让系统只面向接口编程,在系统需要新的对象的时候,可以通过克隆原型来得到.
,可以使用原型模式,通过克隆原型来得到需要的实例.
(Singleton) 发音: ['sɪŋg(ə)lt(ə)n]
ﻩ定义:
ﻩ保证一种类仅有一种实例,并提供一种访问它的全局访问点.
ﻩ使用场合:
ﻩ当需要控制一种类的实例只能有一种,并且客户只能从一种全局访问点访问它时,可以使用单例模式,这些功能正好是单例模式要解决的问题.
ﻩ
(struct)发音: [strʌkt]
6.适配器模式(Adapter)发音: [ə'dæptə]
ﻩ定义:
ﻩ将一种类的接口转换成客户但愿的此外一种接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.
ﻩ使用场合;
,但是它的接口不符合你的需求,这种状况可以使用适配器模式,来把已有的实现转换成你需要的接口.
,这个类也许和某些不兼容的类一起工作,这中状况可以使用适配器模式,届时候需要什么就适配什么.
,是不坑对每一种子类都进行适配,这中状况可以使用适配器模式,直接适配这些子类的父类就可以了.
7.桥接模式(Bridge)发音: [brɪdʒ]
ﻩ定义:
ﻩ将抽象部分与它的实现部分分离,使她们可以独立变化.
ﻩ使用场合:
,可以采用桥接模式.
,可以采用桥接模式,让抽象部分和实现部分独立地变化.
,可以采用桥接模式.
,会导致产生诸多子类,对于这种状况,可以考虑采用桥接模式.
(Composite)发音: ['kɒmpəzɪt]
ﻩ定义:
ﻩ将对象组合成属性构造以表达"部分-整体"的层次构造,组合模式使用的顾客对单个对象和组合对象的使用品有一致性.
ﻩ使用场合:
-整体层次构造,可以使用..把整体和部分的操作统一起来,使得层次构造实现更简朴,从外部来使用,这个层次构造也容易.
ﻩ2.如果但愿批准地使用组合构造中的所有对象,可以选用...,这正是组合模式提供的重要功能.
(Decorator Method)发音: ['dekəreɪtə]
ﻩ定义:
ﻩ动态的给一种对象增长某些额外的职责,就增长功能来说,装饰模式生成子类更为灵活.
ﻩ使用场合:
,以动态,透明的方式给对象添加职责,可以使用装饰模式.
,可以考虑使用装饰模式.
(Facade)发音: [fə'sɑ:d]
定义:
ﻩ为子系统中的一组接口提供一种一致的界面,Facade模式定义了一种高层的接口,这个接口使得这一子系统更加同容易使用.
ﻩ使用场景:
ﻩ1.如果但愿为一种复杂的子系统提供一种简朴接口的时候,,从而简化客户的使用.
,可以考虑使用外观模式,使用外观对象来将这个子系统与她的客户分离开来,从而提高子系统的独立性和可移植性.
,可以考虑使用外观模式使用外观模式对象作为每层的入口,这样可以简化层间调用,也可以松散出层次之间的依赖关系.
11.享元模式(Flyweight)发音: ['flaɪweɪt]
ﻩ定义:
ﻩ运用共享技术有效地支持大量细粒度的对象.
ﻩ使用场合:
ﻩ1.如果一种应用程序使用了大量的细粒度对象,可以使用享元模式来减少对象的数量.
ﻩ2.如果踌躇使用大量的对象,导致很大的存储开销,可以使用享元模式来减少对象数量,并节省内存.
ﻩ3.如果对象的大多数状态都可以转变成外部状态,例如通过计算得到,或者从外部传入等,可以使用享元模式来实现内部状态和外部状态的分离.
,可以用相对较少的共享对象取代诸多组合对象,.
12.代理模式(Proxy)发音: ['prɒksɪ]
ﻩ定义:
ﻩ为其她对象提供一种代理以控制对这个对象的访问.
ﻩ使用场合:
ﻩ1.需要为一种对象在不同的地址空间提供局部代表的时候,可以使用远程代理.
,可以使用虚代理.
,可以使用保护代理.
,可以使用智能指引代理.
(behavioral)发音[bi'heivjərəl]
13.职责链模式(Chain Of Responsibility)发音: [tʃeɪn] [rɪ,spɒnsɪ'bɪlɪtɪ]
ﻩ定义:
ﻩ使多种对象均有机会解决祈求,,,并沿着这条链传递该祈求,直到有一种对象解决它为止.
ﻩ使用场合:
ﻩ1.如果有多种对象可以解决同一种祈求,但是具体由哪个对象来解决该祈求,是运营时刻动态拟定的.
,向多种对象中的其中一种提交祈求的话,可以使用职责链模式.
ﻩ3.如果想要动态指定解决一种祈求的对象结合,可以使用职责链模式.
(Command)发音: [kə'mɑːnd]
ﻩ定义:
ﻩ将一种祈求封装为一种对象,从而使你可用不同的祈求对客户进行参数化,对祈求排队或者记录祈求日记,以及支持可撤销的操作.
(Interpreter)发音: [ɪn'tɜːprɪtə]
ﻩ定义:
ﻩ给定一种语言,定义它的文法的一种表达,并定义一种解释器,这个解释器使用该表达来解释语言中的句子.
ﻩ使用场合:
16.迭代器模式(Iterator)
ﻩ定义:提供一种措施顺序访问一种聚合对象中的各个元素,而又不需要暴露该对象的内部表达.
ﻩ使用场合:
,但是又不想暴露她的内部表达的时候,可以使用迭代器模式来提供迭代器接口,从而让客户端只是通过迭代器的接口来访问聚合对象,而不必关怀聚合对象的内部实现.
ﻩ2.如果你但愿有多种遍历方式可以访问聚合对象,可以使用...
ﻩ3.如果你但愿为遍历不同的聚合对象提供一种统一的接口,可以使用....
(Mediator) 发音:['mi:dieitə]
ﻩ定义:
,从而使其耦合松散,并且可以独立地变化她们之间的交互.
ﻩ使用场合:
ﻩ1.如果一组对象之间的通信方式比较复杂,导致互相依赖,构造混乱,可以采用中介模式,把这些对象互相的交互管理起来,各个对象都只需要和中介者交互,从而是的各个对象松散耦合,构造也更清晰易懂.
,并直接跟这些对象交互,导致难以复用该对象,可以采用中介者模式,把这个对象跟其她对象的交互封装到中介者对象里面,这个对象只需要和中介者对象交互就可了.
(Memento)发音: [mɪ'mentəʊ]
ﻩ在不破坏封装性的前提下,捕获一种对象的内部状态,并在该对象之外保存这个状态.这样后来就可将该对象恢复到原先保存的状态.
ﻩ使用场合:
,以便后来需要的时候,可以把该对象恢复到先前的状态,可以使用备忘录模式.
,但是如果用接口来让其她对象直接得到这些需要保存的状态,将会暴露对象的实现希捷并破坏对象的封装性,这是可以使用备忘录.
19.观测者模式(Observer)发音: [əb'zɜːvə]
ﻩ定义:
,所有依赖于它的对象都得到告知并被自动更新.
使用场合;
,其中一种方面的操作依赖于另一种方面的状态变化,那么就可以选用观测者模式,将这两者封装成观测者和目的对象,当目的对象变化的时候,,它们可以独立地变化和复用.
ﻩ2.如果在更改一种对象的时候,需要同步连带变化其她对象,并且不懂得究竟应当有多少对象需要被连带变化,这种状况可以选用观测者模式,被改的那一种对象很明显就相称于是目的对象,而需要连带修改的对歌其她对象,就作为多种观测着对象了.
ﻩ3.当一种对象必须告知其她的对象,但是你又但愿这个对象和其她被它告知的对象是松散耦合的,也就是说这个对象其实不详懂得具体被告知的对象.这种状况可以选用观测者模式,这个对象就相称于是目的对象,而被它告知的对象就是观测者对象了.
20.状态模式(State)发音: [steɪt]
.
ﻩ使用场合:
,并且它必须在运营时刻根据状态来变化它的行为,可以使用...来包状态和行为分离开.虽然分离了,但是状态和行为是有相应关系的,可以在运营期间,通过变化状态,就可以调用到该状态相应的状态解决对象上去从而变化对象的行为.
,并且这些分支依赖于该对象的状态,可以使用....把各个分支的解决分散包装到单独的对象解决类中,这样,这些分支相应的对象就可以不依赖于其她对象而独立变化了.
(Strategy)发音: ['strætɪdʒɪ]
ﻩ定义:
ﻩ定义一系列的算法,把它们一种个封装起来,并且使她们可以互相替代.本模式使得算法可独立于使用它的客户而变化.
ﻩ使用场合;
,仅仅是行为有差别的状况下,可以使用方略模式来使用多种行为中的一种来配备一种类的措施,实现算法动态切换
,有诸多不同实现的状况下,可以使用方略模式来把这些"不同的实现"实现成为一种算法的类层次.
,有与算法有关数据的状况下,可以使用方略模式来避免暴露这些跟算法有关的数据构造.
,并且是通过多种if-else语句来选择这些行为的状况下,可以使用方略模式来替代这些条件语句.
22.模版措施模式(Template Method) 发音:['templeɪt; -plɪt]
ﻩ定义:
ﻩ定义在一种操作中的算法框架,把某些环节推迟到子类去实现.模版措施模式让子类不需要变化算法的构造而重新定义特定的算法环节
ﻩ功能:
2.把某些算法环节延迟到子类
ﻩ3.易于扩展
,控制了算法的执行流程,而子类不能变化算法的流程,子类的措施的调用由父类的模版措施决定.
,不容许变化的措施屏蔽掉,不让子类去复写她们.
,实现一种算法的不变的部分,并把可变的行为留给子类来实现的状况.
2.各个子类中具有公共行为,应当抽取出来,集中在一种公共类中去实现,从而避免复杂的代码反复
ﻩ3.需要控制子类扩展的状况.模版措施模式会在特定的点来调用子类的措施,这样只容许在这些点进行扩展.
ﻩ
ﻩ知识:
ﻩ回调:表达一段可执行逻辑的引用(或者指针),我们把该引用(或者指针)传递到此外一段逻辑(或者措施)里供这段逻辑适时调用
ﻩ(网站:)
(Visitor) 发音:['vɪzɪtə]
ﻩ定义:
ﻩ表达一种作用于某对象构造中的各个元素的操作.它使你可以在不变化各元素的类的前提下定义作用于这些元素的新操作.
ﻩ使用场合:
,可以使用访问者模式.
,为了避免这些操作使类变得杂乱,可以使用访问者模式.
,但是需要常常给对象构造中的元素定义新的操作,可以使用访问者模式.
,但是需要常常给对象构造中的元素定义新的操作,可以使用访问者模式.