1.单体模式:将功能相关的变量或函数封装【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net在一个静态对象中,相当于命名空间,可以减转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。少全局变量的数量,主要是用来处理变量的问【未经授权禁止转载】【原创内容,转载请注明出处】题
未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。
2.工厂模式:将一个功能封装成一个静态类著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net,无需实例化这个类来调用,而是通过类的一本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。个方法初始化,或者这个类主要用来派生子类【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。,主要用来处理某一个功能的不同操作
本文版权归作者所有,未经授权不得转载。【本文受版权保护】【原创不易,请尊重版权】
3.桥梁模式:在撰写一个程序过程中按照接【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。口直接写某个功能的调用,传入对应的配置参本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。数,此时不用考虑该功能的具体实现,具体实【本文受版权保护】未经授权,禁止复制转载。现可以写在其他模块或函数中,但是其提供的【访问 www.tangshuang.net 获取更多精彩内容】【访问 www.tangshuang.net 获取更多精彩内容】接口应该符合一定的规范,在这个规范指引下本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。,过程代码和功能代码分开,通过接口作为桥【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。梁无缝对接
【关注微信公众号:wwwtangshuangnet】【转载请注明来源】本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。
4.装饰者模式:在不改变原始对象的前提下【原创不易,请尊重版权】未经授权,禁止复制转载。,扩展这个对象。在扩展方法中可能调用原始【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。对象已有的属性,但不能在原始方法中添加新【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】属性来满足扩展的方法
转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】
5.组合模式:将一堆相似的对象组合在一起【本文受版权保护】转载请注明出处:www.tangshuang.net成为一个大的对象,由这个大对象提供接口,未经授权,禁止复制转载。原创内容,盗版必究。通过这些接口再掉内部的对象的接口来实现对原创内容,盗版必究。【原创不易,请尊重版权】应功能
【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】未经授权,禁止复制转载。【作者:唐霜】
6.门面模式:将复杂的逻辑封装起来,只暴【转载请注明来源】转载请注明出处:www.tangshuang.net露一个入口给使用者,主要是为了解决差异(著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】兼容性)问题。比如一些内部处理兼容性的方【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。法,它们的内部肯定有很多判断,但是在外部【作者:唐霜】【关注微信公众号:wwwtangshuangnet】调用的时候,根本不考虑这些兼容性问题,而原创内容,盗版必究。【原创不易,请尊重版权】是根据功能实现的需要来调用。这一点有点像【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。“桥梁模式”,但是桥梁模式更加注重的是功【转载请注明来源】未经授权,禁止复制转载。能和接口,而门面模式更加注重逻辑和暴露一【转载请注明来源】【版权所有,侵权必究】个入口。
【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。
7.配置器模式:将一个类的接口转换为用户【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。希望的另外一个接口。主要解决类的接口兼容本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。性问题。这个用于转换的函数或方法被称为适原创内容,盗版必究。【未经授权禁止转载】配器。从结果来看,它有点像门面模式,都是【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】在解决兼容性问题。
【本文受版权保护】【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】
8.享元模式:把功能一拆再拆,拆到最细,本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】再通过接口、工厂、存储器等组装起来。主要【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net解决的是小粒度相同功能的复用。不过一般情【原创内容,转载请注明出处】【本文受版权保护】况下,这会使程序的可读性降低,但性能会有【原创不易,请尊重版权】【本文首发于唐霜的博客】所提高。
未经授权,禁止复制转载。【转载请注明来源】本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net
9.代理模式:通过创建一个方法来控制是否【版权所有,侵权必究】未经授权,禁止复制转载。执行某些操作。特别是在实例化的时候,如果未经授权,禁止复制转载。【原创不易,请尊重版权】通过代理模式,就可以在特定条件下才实例化【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net类,否则就返回一些提示信息。这样可以节省【原创内容,转载请注明出处】【转载请注明来源】内存。
【转载请注明来源】未经授权,禁止复制转载。
10.观察者模式:定义对象间的一对多依赖本文作者:唐霜,转载请注明出处。【作者:唐霜】关系,当对象的状态发生变化时,依赖它的对【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】象也会跟着更新。事件监听就是一种内置的观本文版权归作者所有,未经授权不得转载。【转载请注明来源】察者。
本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。【转载请注明来源】
11.命令模式:将请求封装成一个对象,当【本文首发于唐霜的博客】【本文受版权保护】要执行某些操作时,通过调用这个对象的“执未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net行操作”,传入“要干什么”“参数”,在其【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】内部来处理具体调用那个类的什么方法。它跟【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】门面模式也有点像,但它更强调的是封装出来【转载请注明来源】本文版权归作者所有,未经授权不得转载。的这个对象的形式是命令的形式。
本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。
12.职责链模式:将一堆处理请求的对象处著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】理成一个链条,当一个请求发生时,传入链条本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。的第一个对象,链条中的对象对传进的请求有未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net两个选择,要么处理它,要么不处理它,要么【版权所有,侵权必究】转载请注明出处:www.tangshuang.net往链条中的下一个对象传,要么结束处理返回【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net结果。
转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】原创内容,盗版必究。
【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。
参考文献:
转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。
【本文受版权保护】【本文首发于唐霜的博客】【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。
2017-02-15 3368 设计模式


