重构代码，增加 demo（test/*）