1、命令模式
顾名思义“命令”行为是该模式的重点,调用者发送命令,然后接收者执行
显然调用者要持有命令对象,根据依赖倒置原则,命令模式是一个接口,通过命令模式让接收者执行,故而命令对象要持有接收者。
2、中介者模式
中介这个词大家应该都熟悉,比如 房子的中介,买房、卖房者通过中介完成交易
那么显然卖房与中介、买房与中介要相互持有
常见的框架如MVP
3、迭代器模式
提供了一种遍历集合对象的接口,它将集合功能实现与遍历分离开来。
比如LinkedHashMap与HashMap,前者继承了后者,功能和数据接口有很多相似之处。但是调用者依旧可以通过获取对应的迭代器,实现不同的目的。比如LinkedHashMap遍历是根据最近访问的时间得到,而HashMap是根据内部数组存储顺序排序,获得每个数组位置中的链表值后再继续遍历下个位置的链表(红黑树也认为是链表)
4、访问者模式
访问者,自然要有访问对象,还有就是存储访问者的集合。
该模式 还是比较复杂的,是通过将现有访问兑现全部记录在访问者的对象中来实现多态,所以一旦要新增访问对象,那么所有的访问者都要新增实现方法,因为接口新增了访问对象。说到这那么自然访问者和要访问的对象都要有一个接口来实现多态。而构建者中有个集合是记录注册的访问对象的 ,当访问者要开发访问时遍历访问对象集合,根据自身的对象类型来执行访问者中的方法。
5、备忘录模式
备忘录模式主要是记录以前的状态,以便在误操作的时候恢复。
比如我们编程时候的撤销和回撤,备忘录负责存储、管理者负责获取、记录数据 (个人觉得该角色可以去除),调用者
存储用什么数据结构自然取决于功能,数据变化恢复最近的先回复就用栈、想根据条件优先级排序,可用优先级队列根据集合功能实现对应功能
6、解释器模式
该模式是根据获得的信息解析程序中能够理解的句子。个人觉得和枚举出各种情况(也有可能是多种数组间的排列组合),通过传入的信息去匹配决定后续行为。