摘要: * 解释模式:用得极其少:此处用一个加法和乘法例子说明: * 模式特点:一个表达式接口(Expression)和多个实现类,表达式接口有个解释的方法interpret(); * 表达式接口的实现类分成2类: 非终结符表达式(NonterminalExpression),例如 加号就是非总结表达式,因 阅读全文
posted @ 2019-05-29 17:47 yangxiaohui227 阅读(139) 评论(0) 推荐(0)
摘要: /** * 中介者模式:中介在生活中是很常见的,如房屋中介,使用了中介模式后,普通对象之间的交流就通过中介来进行,避免了相互进行依赖 * 模式特点:一个中介接口和其实现类,该实现类拥有所有的普通对象的引用 * 每个普通对象都引用一个中介对象 * */ //中介接口 public interface 阅读全文
posted @ 2019-05-29 14:19 yangxiaohui227 阅读(261) 评论(0) 推荐(0)
摘要: /** * 访问者模式:就是不同的人(访问者)对同一种资源(衣服)下的不同分类的表现不一致:举个例子,小孩,男人,女人,去服装店里逛,对童装,男装,女装的感兴趣是不一样的; * 这里小孩,男孩,女人就是访问者,男装,女装,童装就是资源或者elment,服装店就是对象结构: * * 小孩逛商店:对童装 阅读全文
posted @ 2019-05-29 11:11 yangxiaohui227 阅读(280) 评论(0) 推荐(0)
摘要: /** * 备忘录模式:也就是拥有反悔功能的模式:成员有3个 * 发起者Originator:一切围绕它转,它拥有自己的状态,可以给状态记录备份和恢复状态 * 备忘录Memento:记录发起者的状态,当发起者要恢复状态时,就调用它,前提是要先备份才能恢复 * 备忘录管理者Caretaker:备忘录创 阅读全文
posted @ 2019-05-28 17:40 yangxiaohui227 阅读(180) 评论(0) 推荐(0)
摘要: /** * 命令模式:将方法的请求者跟方法的实现者进行分开,常见的例子:遥控器(命令发送者Invoker) 通过按钮(具体的命令Command) 来操作电视机(Receiver 命令接收者或者说是命令实现者) * 这样做的话,方法的请求者(遥控器)跟实现者(电视机)就分开了,解耦合了 * * */ 阅读全文
posted @ 2019-05-28 15:18 yangxiaohui227 阅读(132) 评论(0) 推荐(0)
摘要: /** * 责任链模式:最形象的例子就是过滤器,一个字符串,经过一连串的过滤器,最后得到想要的字符串,例如,过滤HTMl标签,过滤敏感字符,过滤特殊字符 * 模式特点: 一个过滤器接口,多个实现类,其中一个实现类叫过滤器链,它里面有个集合存所有的过滤器,执行过滤时,就是从集合中拿出一个个过滤器来执行 阅读全文
posted @ 2019-05-28 12:01 yangxiaohui227 阅读(137) 评论(0) 推荐(0)
摘要: /** * 迭代器模式:java集合中有通过迭代器来遍历的方式,通过迭代器遍历,隐藏了容器内部的组成,而普通的forEach遍历,是可以知道组成是啥的;此处模拟迭代器的实现; * 迭代器最重要的2个方法:hasNext(),next(),通过自定义一个集合,集合内部集成迭代器来遍历自定义集合 * * 阅读全文
posted @ 2019-05-28 10:53 yangxiaohui227 阅读(87) 评论(0) 推荐(0)
摘要: /** * 观察者模式:就是一个发布订阅模型,有多个观察者和一个被观察者,被观察者状态改变,通知观察者 * 特点:一个被观察者,多个观察者,被观察者有个集合存储注册的观察者,被观察者提供注册,注销,通知功能 *此处以银行发工资为例子 * */ //被观察者,银行 public class Bank 阅读全文
posted @ 2019-05-28 10:05 yangxiaohui227 阅读(116) 评论(0) 推荐(0)
摘要: /** * 状态模式:跟策略模式很像,只不过策略模式是根据行为来判断的,而状态模式是根据状态来判断的:例如猪有睡觉和醒来2种状态,睡觉就会做梦.醒来就会吃东西 * 模式特点:一个状态接口和多个状态实现类 ,一个上下文类,状态对象以组合的方式作为属性到上下文类中 * * * * */ //状态接口 p 阅读全文
posted @ 2019-05-27 17:48 yangxiaohui227 阅读(91) 评论(0) 推荐(0)
摘要: /** * 策略模式:需求:景点卖票,如果是儿童免票,成人原价,学生半价,如果要实现这个效果,并且将来非常容易拓展,那么就可以使用策略模式,策略模式 * 就是将不同的算法抽取出来,每个算法都是平行的.跟if--else if--else if一样,每个算法都是互相平行个关系,将来要新增一个算法,只要 阅读全文
posted @ 2019-05-27 11:44 yangxiaohui227 阅读(122) 评论(0) 推荐(0)