12.3 工厂模式和使用接口和抽象类编程原则