设计模式之责任链chain of responsibility
这个解决方案就是CoR, 在一个链上,都有相应职责的类,因此叫Chain of Responsibility.
CoR的优点:
因为无法预知来自外界(客户端)的请求是属于哪种类型,
每个类如果碰到它不能处理的请求只要放弃就可以。
缺点:
效率低,因为一个请求的完成可能要遍历到最后才可能完成,当然也可以用树的概念优化。
与Command模式区别:
Command 模式需要事先协商客户端和服务器端的调用关系,比如 1 代表 start 2 代表 move 等,这些 都是封装在 request 中,到达服务器端再分解。
CoR 模式就无需这种事先约定,服务器端可以使用 CoR 模式进行客户端请求的猜测,一个个猜测 试验
public interface RequestHandle {
public void requestHandle(Request request);
}
public class Request{
private string request;
public Request(string request){
this.request = request;
}
public string getType(){
return request;
}
/// <summary>
/// 执行语句
/// </summary>
public virtual void Execute() { }
}
public class HelpHandle : Request {
public override void Execute()
{
base.Execute();
}
}
public class ConcreteHandle:RequestHandle
{
private RequestHandle handle;
public ConcreteHandle(RequestHandle handle)
{
this.handle = handle;
}
public void requestHandle(Request request)
{
if (request is HelpHandle)
{
request.Execute();
}
else {
handle.requestHandle(request);
}
}
}
浙公网安备 33010602011771号