java设计模式是java开发前辈们总结出来的开发模式,是高效解决问题的最好方法,他不是特殊的语法规定, 而是总结出来的一套代码调优的解决方案
中介者模式
所谓中介者模式, 就是类似于中间人,在中介者模式中,他要求每个对象都必须知道跟哪些对象有过交互, 例如, 每个人他们必须记住他自己所住小区的每一户人家中有几口人, 如果某一天,某家人又诞生了一个新成员, 那他就必须让他的朋友也知道这个事情, 然后告诉他们需要记住某家人又多了一个新成员, 等于是这家人诞生新成员的事情被某个人知道了. 但是这个人一个人知道还不行, 他必须让他所有的朋友也知道 , 所以到最后就是群人修改了记忆,中间就是很复杂的网状结构
如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。如前面所说的“每个人必须记住小区所有住户信息”的问题,只要在网上建立一个每个朋友都可以访问的信息库就解决了。。
在软件的开发过程中,这样的例子也很多,例如,在 MVC 框架中,控制器(C)就是模型(M)和视图(V)的中介者;还有大家常用的 QQ 聊天程序的“中介者”是 QQ 服务器。所有这些,都可以采用“中介者模式”来实现,它将大大降低对象之间的耦合性,提高系统的灵活性。
模式的定义与特点
中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。
中介者模式是一种对象行为型模式,其主要优点如下。
类之间各司其职,符合迪米特法则。
降低了对象之间的耦合性,使得对象易于独立地被复用。
将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。
其主要缺点是:中介者模式将原本多个对象直接的相互依赖变成了中介者和多个同事类的依赖关系。当同事类越多时,中介者就会越臃肿,变得复杂且难以维护。
组合模式
生活中存在xx部分是属于xx整体的关系, 比如,纽扣是衣服的一部分, 鞋带是鞋子的一部分 , 书本是书包的一部分, 以及车轮是车子的一部分等 反之来说就是 车子的有一部分是轮胎, 在操作系统中也是这样, 比如文件跟文件夹属于文件系统
组合模式的定义与特点
组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。
组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含树枝节点和叶子节点,树形结构图如下。