具有其他方法的子类的模板模式扩展

时间:2014-03-13 18:48:11

标签: java templates design-patterns

最好通过一个例子解释:

interface Plane {
    public void flapsExtended();
    public void engineFullThrottle();
    public void takeOff();
    public void landed();
}


class Spitfire implements Plane {
}

class P51Mustang implements Plane {
}

到目前为止,我的代码做得很好。但是,随着二战结束,我们从来没有使用可伸缩起落架的喷气式飞机。 所以我为F22添加了一个新类,需要在retractLandingGear()extendLandingGear阶段之间添加takeOffland

示例:

class F22 {
        public void flapsExtended();
        public void engineFullThrottle();
        public void takeOff();
        public void retractLandingGear();
        public void extendLandingGear();
        public void landed();
}

现在我如何用这些遗留代码(和传统飞机:)插入F22?)?

1 个答案:

答案 0 :(得分:0)

如果您完全控制所有代码并且能够修改它,只需修改旧类,以便新方法执行无操作。

但是,如果您无法修改旧类,则必须使用额外方法创建一个新的子接口,并执行instanceof检查以查看您正在使用的对象使用的接口版本,然后执行相应

当您可以向接口添加默认实现时,将在Java 8中解决此问题。