Java 如何避免重复代码

Java 如何避免重复代码,java,guice,Java,Guice,我正在创建两个处理不同属性的Guice模块。这种方法的问题是,我必须在实现中复制代码两次。如何避免重复并仍然能够自定义绑定 我曾考虑使用提供者,但找不到更干净的方法。任何指示都将不胜感激 public abstract class AConfModule extends AbstractModule { /** * {@inheritDoc} */ protected void configure() { // Do some Confugu

我正在创建两个处理不同属性的Guice模块。这种方法的问题是,我必须在实现中复制代码两次。如何避免重复并仍然能够自定义绑定

我曾考虑使用提供者,但找不到更干净的方法。任何指示都将不胜感激

public abstract class AConfModule extends AbstractModule {

    /**
     * {@inheritDoc}
     */
    protected void configure() {
        // Do some Confugurations
        iConfigure();
    }

    protected abstract void iConfigure();

}


public abstract class BConfModule extends AbstractModule {

    /**
     * {@inheritDoc}
     */
    protected void configure() {
        // Do some Confugurations
        iConfigure();
    }

    protected abstract void iConfigure();

}
为什么不:

public abstract class AbstractConfModule extends AbstractModule {

    /**
     * {@inheritDoc}
     */
    protected void configure() {
        // Do some Configurations
        iConfigure();
    }

    protected abstract void iConfigure();

}

public abstract class AConfModule extends AbstractConfModule { }
public abstract class BConfModule extends AbstractConfModule { }
为什么不:

public abstract class AbstractConfModule extends AbstractModule {

    /**
     * {@inheritDoc}
     */
    protected void configure() {
        // Do some Configurations
        iConfigure();
    }

    protected abstract void iConfigure();

}

public abstract class AConfModule extends AbstractConfModule { }
public abstract class BConfModule extends AbstractConfModule { }

将configure和iConfigure向上移动到AbstractModule中,或者创建另一个中间人抽象ConfModule来扩展AbstractModule?将configure和iConfigure向上移动到AbstractModule中如何,或者创建另一个扩展AbstractModule的中间人AbstractConfModule?是否有任何方法将提供程序与approch一起使用?@allthenutsandbolts您想做什么?为什么要使用提供程序?我有两个模块,其中一个从命令行读取属性,另一个模块实际从属性文件读取并使用自定义绑定。所以我在想,如果我引入了一个提供商,那么我就可以在需要的时候获得所需类型的模块。听起来你好像设计过度了。只需编写两个配置类。让他们工作。如果在它们工作之后,您发现一些可以重构的通用代码/模式,那么重构。否则,请转到其他方面。还有更大的鱼要炒。就连我也这么认为。。。谢谢有没有办法将提供程序与方法一起使用?@allthenutsandbolts您想做什么?为什么要使用提供程序?我有两个模块,其中一个从命令行读取属性,另一个模块实际从属性文件读取并使用自定义绑定。所以我在想,如果我引入了一个提供商,那么我就可以在需要的时候获得所需类型的模块。听起来你好像设计过度了。只需编写两个配置类。让他们工作。如果在它们工作之后,您发现一些可以重构的通用代码/模式,那么重构。否则,请转到其他方面。还有更大的鱼要炒。就连我也这么认为。。。谢谢