职责链模式

本文以自然界生物链为比喻,介绍了软件设计中职责链模式的概念及其应用。通过具体代码示例展示了如何实现请求处理的传递机制,降低了请求发出者与处理者之间的耦合度。

剧情简要:    

     学习此模式,让笔者联想到自然界的生物链。打个比方:大鱼吃小鱼,小鱼吃虾米。河里的小虾米问大鱼,“你要不要吃我啊?”大鱼说“你太小了,吃了==没吃,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个模式看完了,也就忘了差不多了。

     个人拙见,仅供参考。


 

评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值