标签:
时间过得真快,转眼又是半年,可是作为一名将要资深的码农,是不是应该加薪了呢?可是说到加薪,经理又要推诿,这个不是我能决定的,你去找总监吧,总监又会说,在等等吧,等这个项目上线不会亏待你的。我的个神呀,这个产品上线估计要到明年春天吧!好吧,关于职责问题,这里就是一个著名的设计模式,职责链模式。
把用户的请求,层层传递处理,直到这个请求被处理为止。
工作加薪、请假。
暂时没有发现,如果有发现的同学可以提出修改。
抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法以设定和返回对下家的引用。这个角色通常是一个Java抽象类。上图中Handler类的聚合关系给出了具体子类对下家的引用,抽象方法handleRequest()规范了子类处理请求的操作。
具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。
当客户提交一个请求时,请求是沿链接传递直到有一个ConcreteHandler对象负责处理它。
接收者和发送者都没有对方明确信息,且链中的对象自己也并不知道链的结构。结果只是职责链可简化对象的相互连接,他们仅需要保持一个指向其后继者的引用,而不需要保持它所有的候选接受者的引用。
随时的增加或修改处理一个请求的结构。增强了给对象指派职责的灵活性。
一个请求极有可能到了链的末端都得不到处理,或者因为没有正确配置而得不到处理,所以对于使用这个设计模式一定要对逻辑清晰。
这个设计模式感觉和状态模式有点相似,状态模式则是定义了不同状态的接口,然而,职责链模式则不会把内部处理的逻辑暴露给客户端,而是对客户端透明处理,我想这应该也就是二者的一个重大区别吧。二者共同点就是对象处理的传递,层层传递,直到处理为止。
标签:
原文地址:http://my.oschina.net/heweipo/blog/470019