redesign class and method

最近在看面向对象设计实践指南，有些感触，把一些不太顺眼的地方改下。
添加命令行选项

这样看起来就更像命令行程序了
extact method
太混乱了，重写