我已经阅读了重构this手册中列出的不同选项,但我不认为我想要的是。
我有一个包含许多批处理作业的项目,这些作业是扩展org.quartz.Job的类,我当然无法对其进行更改。当我发现自己在每个作业中编写了大量相同的代码来处理特定于我的系统的事情时,很明显我应该有一个抽象类,它是我所有批处理作业的父级,并执行那些特定于系统的任务,让我们看看调用那个将扩展org.quartz.Job的org.mycompany.MySystemJob
我会想象这种重构很容易实现,其中所有直接从A类扩展的类都是从一个由重构创建并扩展为A的新类B扩展而来。
我考虑过“提取超类”但这实际上要简单得多,因为这些方法来自单一来源,“提取超类”重构要求你手动添加所有“兄弟”类,在这种情况下都是真正的兄弟姐妹。
我知道我可以在类型层次结构中找到所有这些类,然后在每个类上更改一行。这并不难,当然,但在我看来,保存这种手工作品正是重构应该是什么。
无论如何,也许我只是想念那里的东西。希望如此。感谢。
答案 0 :(得分:0)
诀窍是创建一个具有相同限定名称的类/接口作为无法更改的库类/接口。如果移动或重命名此类/接口,则最初与库的类/接口相关的所有引用都将自动更新为此新创建的类/接口。
另请考虑使用composition over inheritance。