??????????

?????????????к???mock???????jmock??easymock????????Щ???????????????mock????????Щ???????????????????дmock??????????????????????????????mock??????????????????ɡ?

??????????

????????????????????????????????????????????????????????????м????????????????????????????????????????????????SRP???????????y??е??????????????е?????????????????????????????????????

??????????

?????????????????????????Щ?μ??????Щ???????????????????????????????′????????????parse???????????????????????????????????????????????


public class Parser{
public void parse(){
  .........
}
}


?????????????????????????parseWithLogger()

?????磺


public class Parser{
 public void parseWithLogger(){
    Logger loger = Logger.log(.....);
    parse();
}
 public void parse(){
 ......
}
}


???????????????????????parse????????????????????????????μ???????????????????t??ж?????μ???????в????С?

????????????????????????????????????parseWithoutLogger()


public class Parser{
public void parseWithoutLogger(){
   ...........
}
public void parse(){
  Logger log = Logger.log();
  parseWithoutLogger();
}
}


????????????????????????????????????t??в???parse????????logger??

??????????????????????????????????????????????????????С?????????????????в??????????????????????????????С???????????????????????????У???????????????

??????????????????????????к??????????ο?Michale Feathers д??<working effectively with legacy code>??