看起来您需要“责任链”模式。例子是java,但原理是一样的。
为每个角色创建一个抽象处理程序并实现一个子类。
抽象处理程序:
class abstract Handler{
Handler succesor;
Role ROLE;
Handler(Handler succesor, Role role){
this.succesor = succesor;
this.ROLE = role
}
void sendMessage(Message msg, Role role){
if(role == ROLE){
this.handleMessage(msg);
} else if(succesor != null){
succesor.sendMessage(msg, role);
}
}
abstract void handleMessage(msg);
}
你比一个具体的处理程序像这样:
class RoleAHandler extends Handler{
RoleAHandler(Handler succesor){
super(succesor, RoleA);
}
@override
void handleMessage(msg){
// put handlecode here
}
}
并像这样使用它:
// initialize
Handler handler = new RoleAHandler(null);
handler = new RoleBHandler(handler);
// usage
handler.sendMessage(new Message, RoleA);
您可以制作任意数量的角色