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