作者swpoker (swpoker)
看板java
标题[问题] 关於邮递区号的判别
时间Wed Oct 1 13:36:28 2008
各位大大好~
我在处理从地址判断邮递区号 3 或 5 码的时候
再处理前3码部分就已经完成
就在最後的门号部份的判定
不太清楚该怎麽实作
可以有人提供想法吗
我的想法是
public interface DoorPlateMatch {
public boolean isMatchDoorPlate(String address);
} ---> 这个用来判别输入地址的门号是否符合
public interface PlateStrategy {
public boolean isMatchZipcodeFormat(String plate);
public DoorPlateMatch getDoorPlateMatch();
} ---> 这个用来汇入规则时~所对应的且要提供门号符合的元件
public class DoorPlateFacade {
public static DoorPlateMatch getDoorPlateMatch(String doorplateformat){
for(int i=0;i<plateStrategys.length;i++){
if(plateStrategys[i].isMatchZipcodeFormat(doorplateformat)){
return plateStrategys[i].getDoorPlateMatch();
}
}
return null;
}
static PlateStrategy [] plateStrategys = new PlateStrategy[]{
new PlateStrategy(){
/* 全 */
public DoorPlateMatch getDoorPlateMatch() {
return new DoorPlateMatch(){
public boolean isMatchDoorPlate(String address) {
return true;
}
};
}
public boolean isMatchZipcodeFormat(String plate) {
// TODO 自动产生方法 Stub
return plate.trim().equals("全");
}
}
,new PlateStrategy(){
/* 单全 */
public DoorPlateMatch getDoorPlateMatch() {
return new DoorPlateMatch(){
public boolean isMatchDoorPlate(String address) {
待实作
return true;
}
};
}
public boolean isMatchZipcodeFormat(String plate) {
// TODO 自动产生方法 Stub
return plate.trim().equals("单全");
}
}
};
} ----> 处理汇入的规则及决定是否有适当的门号判别元件
谢谢~~
以下为由邮局所提供的区码判别规则的部份
10058,台北市,中正区,八德路1段,全
10079,台北市,中正区,三元街,单全
10070,台北市,中正区,三元街,双 48号以下
10079,台北市,中正区,三元街,双 50号以上
10068,台北市,中正区,大埔街,单 17号以上
.......
(可以在邮局下载此份规则)
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.28.137
1F:推 jengjye:要做到後两码 要先把那分区规则看完吧? 感觉後两码分很细 10/01 14:31
2F:→ swpoker:就是因为很细~规则很多~所以在想要怎麽弄会比较好~谢谢了 10/01 15:27
3F:推 Lordaeron:抓邮局的excel 档回来,再去比对会不会比你搞规则好? 10/01 23:17
4F:推 Lordaeron:拆成树结构,比你写rule还要对测来得好写. 10/02 00:44
5F:→ swpoker:之前有试过采用decorator,可是有些情况很难处理 10/02 09:35
6F:→ swpoker:所以我采用stratgey,来写规则~可以顺利分离规则到门号 10/02 09:37
7F:推 Lordaeron:我的看法是与其折规则後再全测,不如拿档回来分拆做成树 10/02 11:03
8F:推 Lordaeron:比较快, 参考看看吧. 10/02 11:05
9F:→ swpoker:请问树是指 台北县-永和市-成功路-连单号 之类的吗 10/02 14:49
10F:推 Lordaeron:你怎麽拆规则就怎麽拆树, 拆到什麽单双号再去比大小就好 10/02 14:51
11F:推 jengjye:其实满烦杂的ㄟ 例如规则写A路23号到D路99号同区 10/02 23:59
12F:→ jengjye:但怎判断给定地址是否包在此区块内? 除非有完整的资料库吧 10/03 00:02