سلام
توی برنامم یه سوییچ کیس طولانی هست با بیش از 20 تا کیس که برای هر کیسی هم یه متد متفاوت صدا زده میشه یعنی برای هر کیسی یک کار متفاوتی انجام میشه.برای کوتاه کردن این سوییچ کیس چه راهی دارم؟
ممنون.
سلام
توی برنامم یه سوییچ کیس طولانی هست با بیش از 20 تا کیس که برای هر کیسی هم یه متد متفاوت صدا زده میشه یعنی برای هر کیسی یک کار متفاوتی انجام میشه.برای کوتاه کردن این سوییچ کیس چه راهی دارم؟
ممنون.
سلام شما می توانید از ساختار enum ها استفاده کنید.
ساختار سوییچ کیس
switch (commandType) {
case COMMAND_LOGIN:
command = getCommand(commandType, agentId);
break;
case COMMAND_MAKE_READY:
command = getCommand(commandType, agentId);
break;
case COMMAND_MAKE_NOT_READY:
command = getCommand(commandType, agentId);
break;
case COMMAND_MAKE_NOT_READY_WITH_REASON:
command = getCommand(commandType, agentId);
break;
case COMMAND_LOGOUT_WITH_REASON:
command = getCommand(commandType, agentId);
break;
case COMMAND_ANSWER_CALL:
command = getCommand(commandType, agentId);
break;
case COMMAND_HOLD_CALL:
command = getCommand(commandType, agentId);
break;
case COMMAND_RETRIEVE_CALL:
command = getCommand(commandType, agentId);
break;
case COMMAND_END_CALL:
command = getCommand(commandType, agentId);
break;
case COMMAND_TRASFER_SST_CALL:
command = getCommand(commandType, agentId);
break;
case COMMAND_CONSULT_CALL:
command = getCommand(commandType, agentId);
break;
.
.
.
.
.
default :
command = "";
break;
}//end switch
که به جای این سوییچ کیس طولانی یک enum تعریف کرده وساختار کوچکتری شده
public enum CommandType{
COMMAND_HOLD_CALL(0),
COMMAND_RETRIEVE_CALL(1),
.....
COMMAND_RETRIEVE_CALL(55),
COMMAND_MAX(56),
;
private int commandId;
private CommandType(int commandId){
this.commandId= commandId;
}
public int getValue(){
return this.commandId;
}
}
}
که این تکه کد زیر جایگرین سوییچ کیس مون شده است .
if(commandType.getValue()<CommandType.COMMAND_MAX.getValue()){ // The range is from 0 to 55
command = getCommand(commandType, agentId);
}else{
command = "";
}
http://codereview.stackexchange.com/questions/74743/refactoring-a-long-switch-statement-in-java
سلام ببخشید دیر شد،
اره این لینک یکی از بهترین سایت برای یادگیری اسان است
http://www.tutorialspoint.com/design_pattern/strategy_pattern.htm
Strategy pattern, a class behavior or its algorithm can be changed at run time. This type of design pattern comes under behavior pattern.
پاسخ ها