2016-07-08 4 views
0

Я создаю два модуля 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(); 

} 
+2

насчет перемещения Настраивать и iConfigure вверх в AbstractModule, или создать другой средний человек абстрактную ConfModule, который проходит AbstractModule? – Compass

ответ

4

Почему нет:

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 { } 
+0

Есть ли способ использования Провайдера с одобрением? – allthenutsandbolts

+0

@ allthenutsandbolts, что вы пытаетесь сделать? Почему вы хотите использовать провайдера? – Bohemian

+0

У меня есть 2 модуля, один из которых считывает свойства из командной строки, и есть один модуль, который фактически читает файлы свойств и использует настраиваемые привязки. Поэтому я думал, что если я представим провайдера, я смогу получить необходимый тип модуля, когда это необходимо. – allthenutsandbolts

Смежные вопросы