您现在的位置是:首页 >

责任链模式适合在什么场景下使用 JAVA中责任链模式

火烧 2022-10-12 02:11:19 1090
JAVA中责任链模式   使很多对象都有处理请求的机会 从而避免请求的发送者和接受者之间的耦合关系 将这些对象连成一条链 并沿着这条链传递该请求 直到有一个对象处理它为止责任链模式主要包括以下几个角色

JAVA中责任链模式  

  使很多对象都有处理请求的机会 从而避免请求的发送者和接受者之间的耦合关系 将这些对象连成一条链 并沿着这条链传递该请求 直到有一个对象处理它为止责任链模式主要包括以下几个角色 处理者 处理者是一个接口 负责规定具体处理者处理用户请求的方法以及具体处理者设置后继处理对象的方法 具体处理者 具体处理者是实现处理接口的类的实例 具体处理者通过调用处理接口规定的方法处理用户的请求 既在接到用户的请求后 处理者将调用接口规定的方法 在执行该方法的过程中 如果发现能处理用户的请求 就处理用户的请求 如果发现处理不了就交给下一个处理者进行处理

  例如一个图书检索的程序 根据图书类别将图书分为了N个种类 然后创建若干个种类的对象 每个对象对一个种类进行检索 为了能更好的管理这些对象 可以将这额对象组织成一个责任链 当用户需要鉴定书籍时 系统可以让责任链上的第一个对象来处理用户的请求 这个对象首先检索自己是否能够处理用户的请求 如果能处理就反馈并返回处理内容 如果不能处理则交给下一个处理对象进行处理

  view plainprint?

  package zhy design demo

  /** * 处理接口* @author zhengyi * */ public interface Handler {

  //根据书的ID进行检索public abstract void Search(int id)

  //下一个处理者 参数为实现处理接口的实现类public abstract void nextHandler(Handler han) }

  view plainprint?

  package zhy design demo

  import java util ArrayList import java util List

  /** * 文学类的书籍检索* @author zhengyi * */ public class WenXue implements Handler{

  private Handler han //下一个处理者private List<Integer> list   //模拟文学类书籍的编号

  public WenXue(){ list=new ArrayList<Integer>() list add( ) list add( ) list add( ) list add( ) list add( ) }

  @Override public void nextHandler(Handler han) { this han=han   //给下一个处理者赋值} @Override public void Search(int id) { if(ntains(id)){ //检索list中是否存在此ID的书籍 如果存在则打印System out println( 恭喜您 您检索的书籍是文学类的 ) }else{ //如果没有此书籍则交给下一个处理者进行处理if(han!=null){ han Search(id) }

  view plainprint?

责任链模式适合在什么场景下使用 JAVA中责任链模式

  package zhy design demo

  import java util ArrayList import java util List

  /** * 计算机类的书籍* @author zhengyi * */ public class JiSuanJi implements Handler {

  private Handler han private List<Integer> list public JiSuanJi(){ list=new ArrayList<Integer>() list add( ) list add( ) list add( ) list add( ) list add( ) } @Override public void nextHandler(Handler han) { this han=han } @Override public void Search(int id) { if(ntains(id)){ System out println( 恭喜你 此书记在计算机类 ) }else{ if(han!=null){ han Search(id) }

  view plainprint?

  package zhy design demo

  public class Appliction {

  private Handler jisuanji wenxue

  public void createHandler(){ jisuanji=new JiSuanJi() wenxue=new WenXue() jisuanji nextHandler(wenxue)   //指定下一个处理者}

  public void search(int id){ jisuanji Search(id)   //第一个处理者进行筛选处理}

  public static void main(String[] args) { Appliction app=new Appliction() app createHandler() app search( ) }

lishixinzhi/Article/program/Java/hx/201311/26543  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码