更多的抽象,功能完善,添加localStorage