推卸责任设计模式

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));
}

}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值