您的位置:首页 > 编程语言

责任链设计模式代码

2017-01-01 17:54 183 查看
package com.lian;

public abstract class Handle {

//只有一个执行。 所有都执行  部分执行。自己判断

Handle nextHandle;
int  leve=0;  //会复制给每个子类。每个子类保存一份
int i=0;

/*	public void execute(int leve) { //只有一个执行
i++; //每个子类都有i
System.out.println("处理第"+i+"次"); //没有意义
if (leve==this.leve) {
look() ;
}else {
if (getNextHandle()!=null) {
getNextHandle().execute(leve); //递归
}else {
System.out.println("没有处理者了");
}
}

}*/

/*	public void execute(int leve) { //多个执行
i++; //每个子类都有i
//System.out.println("处理第"+i+"次"); //没有意义
if (this.leve>=leve) {
look() ;
}

if (getNextHandle()!=null) {
getNextHandle().execute(leve); //递归
}else {
System.out.println("没有处理者了");
}
}*/

public void execute(int leve) { //所有个执行

look() ;
if (getNextHandle()!=null) {
getNextHandle().execute(leve); //递归
}else {
System.out.println("没有处理者了");
}
}
public abstract void look() ;

public Handle getNextHandle() {
return nextHandle;
}

public void setNextHandle(Handle nextHandle) {
this.nextHandle = nextHandle;
}

public int getLeve() {
return leve;
}

public void setLeve(int leve) {
this.leve = leve;
}

public static void main(String[] args) {

Handle ks=new KsHandle();
Handle bm=new BmHandle();
Handle zj=new ZjHandle();

ks.setNextHandle(bm);
bm.setNextHandle(zj);

// ks.execute(4);
ks.execute(2); //不管你选哪个执行

}

}


package com.lian;

public class KsHandle extends Handle {

public KsHandle() {
this.leve=1;
}

@Override
public void look() {
System.out.println("科室领导审批");
}

}

package com.lian;

public class ZjHandle extends Handle {

public ZjHandle() {
this.leve=3;
}

@Override
public void look() {
System.out.println("总经理领导审批");
}

}

package com.lian;

public class BmHandle extends Handle {

public BmHandle() {
this.leve=2;
}
@Override
public void look() {
System.out.println("部门领导审批");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: