这个就不要在abstract里实现了,  cli和http各自实现, 否则不符合设计. abstrct竟然要考虑不同的子类...