項目中有個業務處理類大小
下面我們對業務流程
處理請求Handler類的代碼邏輯如下
Java代碼
//類中主要方法如下
public void execute(Object object) {
Message message = (Message)object;
int opcode = message
int connectId = message
//消息頭已經解析
byte[] bytes = message
if (opcode == MsgInfo
// 訂購彩鈴
orderRing(connectId
} else if (opcode == MsgInfo
// 贈送彩鈴
presentRing(connectId
} else if (opcode == MsgInfo
// 刪除個人鈴音
delPersonalRing(connectId
}
//此處省略n個else if
}
//其他刪除
private void orderRing(int connectId
//處理方法分為四步
//
//
//
//
}
//省略presentRing
鑒於此
何謂命令模式
Shit
類圖先省略
下面進入正題
將每個if語句塊中的邏輯提取為一個方法
將每個業務處理方法提取為以各類
Java代碼
public Abstract class Command{
public void execute()
}
public class OrderRingCommand extends Command {
private Handler hander;
public OrderRingCommand(Handler hander){
this
}
public void execute(int connectId
//
//
//
//
}
/**
*
*/
public void method
}
/**
*
*/
public void method
}
/**
*
*/
public void method
}
/**
*
*/
public void method
}
}
public class DelRingCommand extends Command {
private Handler hander;
public DelRingCommand(Handler hander){
this
}
public void execute(int connectId
//
//
//
//
}
//提取方法
}
Java代碼
Map<Integer
static{
map
//省卻其他
}
public void execute(Object object) {
Message message = (Message)object;
int opcode = message
int connectId = message
//消息頭已經解析
byte[] bytes = message
map
}
命令模式替換else if代碼壞味道的重構結束
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27066.html