我有一个抽象类,它由其他几个类扩展,每个类都有一个名为child_save_changes()
的抽象方法。
模板类中的一个方法称为on_save_changes()
,每当用户单击"提交"时,就会从另一个页面调用此方法。
on_save_changes()
方法首先设置验证/保存所需的一些类变量,然后调用child_save_changes()
,最后处理重定向回引用页面。
问题是,因为我通过另一个页面的回调调用on_save_changes()
,它不知道从哪个子类调用抽象方法child_save_changes()
,因此它只是选择找到的第一个。
在每个child_save_changes()
方法中重复代码似乎效率很低,所以我想知道过去是否有人遇到过类似的情况,他们采取了什么措施来解决这个问题?谢谢
在我看来,您使用的是静态方法。否则,您描述的问题就无法合理地发生。
您写道,"on_save_changes()
不知道从哪个子类调用抽象方法child_save_changes()
"。但是普通(即非静态)方法不是从类中调用的,而是从对象中调用的。每个对象都清楚地知道它属于哪个类,因此永远不会混淆要调用哪个方法。
另一方面,静态方法并不是为处理这样的继承层次结构而设计的。我个人建议重构您的代码并将其转换为非静态代码,但如果您不想这样做,您可以使用后期静态绑定使其工作。