Support类别
package com.example.myapplication;
import android.icu.lang.UScript;
import android.provider.ContactsContract;
public abstract class Support {
private String name;
private Support next;
public Support(String name){
this.name=name;
}
public Support setNext(Support next){
this.next=next;
return next;
}
public final void support(Trouble trouble){
if(resovle(trouble)){
done(trouble);
}
else if(next!=null){
next.support(trouble);
}
else{
fail(trouble);
}
}
protected abstract boolean resovle(Trouble trouble);
protected void done(Trouble trouble){
System.out.println(trouble+“is resolved by”+this+".");
}
protected void fail(Trouble trouble){
System.out.println(trouble+“can not be resoled”);
}
}
Nosupport类别
package com.example.myapplication;
public class NoSupport extends Support {
public NoSupport(String name){
super(name);
}
@Override
protected boolean resovle(Trouble trouble) {
return false;
}
}
OddSuport类
package com.example.myapplication;
public class OddSupport extends Support {
public OddSupport(String name){
super(name);
}
@Override
protected boolean resovle(Trouble trouble) {
if(trouble.getNumber()%2!=0){
return true;
}
return false;
}
}
LimitSuport类别
package com.example.myapplication;
public class LimitSupport extends Support{
private int limit;
public LimitSupport(String name,int limit){
super(name);
this.limit=limit;
}
@Override
protected boolean resovle(Trouble trouble) {
if(trouble.getNumber()<limit){
return true;
}
return false;
}
}
测试主类
package com.example.myapplication;
public class Main {
public static void main(String[] args){
Support A=new NoSupport(“AA”);
Support B=new LimitSupport(“BB”,10);
Support C=new OddSupport(“CC”);
Support D=new SpecialSupport(26,“DD”);
A.setNext(B).setNext©.setNext(D);
for(int i=0;i<30;i++){
A.support(new Trouble(i));
}
}
}
159

被折叠的 条评论
为什么被折叠?



