剧情简要:
学习此模式,让笔者联想到自然界的生物链。打个比方:大鱼吃小鱼,小鱼吃虾米。河里的小虾米问大鱼,“你要不要吃我啊?”大鱼说“你太小了,吃了==没吃,return懒得吃!”然后虾米又问小鱼、小螃蟹、小河马同样的问题。其实如果小虾米这么想自我了结的话,根本不用这么费劲。这就开始了我们职责链模式的介绍和使用。
主角上场:
所谓职责链,其实就是在以小虾米为被食者的生物链上,将所有的捕食者进行有序的职责排列。对外提供一个捕食者的接口。如果先问到大鱼,大鱼不想吃(不能处理此事件)时,便自动跳转到询问职责链上下一个捕食者,直至遇到那个对味的,美美的享受一餐,成全小虾米的夙愿。省去了小虾米每次都要找人问(导致问、答两类间强耦合),问完了得到答案,也不知道是喜是悲。
具体代码入下:
Abstract class Handler //提供一个抽象处理接口类
{
Protected Handler successor;
Public void SetSuccessor(Handler successor)
{
This.successor=successor;
}
Public abstract void HandlerRequest(int request)
}
Class ConcreteHandler1:Handler //具体处理者(小鱼、大鱼、小螃蟹)
{
Public override HandlerRequest( int request)
{
If (request>=0 && request<10) //处理条件,满足此条件,则输出“已处理”字样
{
Console.wrieteline " 已处理 "
}
Else if (successor !=null) //如果处理不了,则转向下一个对象,直至有对象可以处理此要求。
{
Successor.HandlerRequest(request);
}
}
}
使用职责链模式的好处呢,就是当请求发出,不管怎么传递,最终都会有一个具体处理对象对此请求做出处理。同时也降低了请求发出者和处理者间的耦合度。
观后感:
总结到这里吧,对设计模式一书也有了点自己的拙见,跟大家分享。虽然这本书通过生活中大量实例来对每个模式进行剖析,引人入胜,阅读者也拍手称赞。但是我们在读的时候,不仅仅要能理解作者举的例子,还应该联系自己的生活实际,去联想,看看这个模式对应我们生活的某部分,我们能否举出来更恰当有意思的实例。所谓站在巨人的肩膀上嘛,通过大脑反复思考推敲出来的东西,才是自己的,不然总在为作者的天马行空而激动喝彩,23个模式看完了,也就忘了差不多了。
个人拙见,仅供参考。