修复database不能存储数据，改用中介者模式