修改设计模式，增加扩展性（进行中）