1、适配器:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类一起工作
非官方:可用于补救:你说英语我说汉语,事实已无法改变,但双方互不理解,不能解决问题,这时候适配器就上场了,提供一个转义的方法,将一方意思翻译成另一方能理解的表示传达给对方。可想想电脑的适配器原理,将一方电压转化成对方能接受的电压输送给对方,忽略单向输电的问题。
2、桥接:将抽象部分与它的实现部分分离,使它们都可以独立的变化
非官方:抽象和实现若要各自变化就很难保持两者间的关系,这时通过桥接来使它们联系起来,维持关系。看上去和适配器差不多,叫法不一样,但适配器可以说是用于类间通信的(横向),而桥接是为了使类分开自立门户的,没有桥接的自立门户,类的关系就破坏了(纵向)。一定程度上桥接提高了抽象的级别。
3、组合:将对象组合成树形结构以表示部分整体的层次结构,使用户对单个对象和组合对象的使用具有一致性
非官方:官方说的对。但我觉得还可以深挖,它设计了分层的思想,所以不能局限在编程里。
4、装饰:动态地给一个对象添加一些额外的职责
非官方:强调内在过程,只表现外在效果。拿化妆来说,到场合(客户端)后一下化完妆不太好吧,毕竟让人看着化妆而且是一步完成有点不友好啊,那就在出门前画,在上一步的基础上画,到场合(客户端)后展示的是画好装后的你(不是俺,俺是男哒)
5、外观:为子系统中的一组接口提供一个一致的界面,定义了一个高层的接口,这个接口使得这一子系统更加容易使用
非官方:对子系统的类抽象出一个外观,通过它来进行对子系统的访问,无需知道具体子系统有哪些,只需知道外观即可,降低了耦合度。个人认为和桥接神似,都是提高了抽象的级别,只不过外观是从下到上进行的抽象,桥接是从上到下进行的抽象。
6、享元:为运用共享技术有效地支持大量细粒度的对象
非官方:减少相似。给我的感觉像是原型的感觉,也像是模板的感觉。,都是重复、稍变这个问题,还是角度不一样,用的位置不一样,一般思路解决不了就找享元吧。它们都是好兄弟。
7、代理:为其他对象提供一种代理以控制对这个对象的访问
非官方:帮忙办事——代理者为请求者办事,但整件事和代理者无关,又不能没有代理者(和化学中的催化剂相像)。请求者类和代理者实现它们共同的约定事件的接口,所有资源来源于请求者。(使本来挺直接的事变复杂了哈)