Шаблон проектирования для обработки частых изменений логики в расширяющихся классах - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть класс процессора - AbstractProcessor и несколько конкретных классов (которые расширяют этот базовый класс), которые вызываются в порядке бизнес-логики.

public Abstract class AbstractProcessor {
   public void doProcess(){}
}

Логика в моих конкретных классах постоянно меняется в зависимости от требований бизнеса. Это приводит к изменению в соответствующих классах тестирования и представляется тесно связанным подходом.

Есть ли лучший способ спроектировать такие классы.

1 Ответ

0 голосов
/ 22 апреля 2019

Вы можете использовать Java-интерфейсы и переопределять различные версии реализации в зависимости от ваших потребностей. Вы можете вызвать конкретную реализацию в зависимости от потребностей вашего клиента.

Example:
Interface A{
    void showName();
}

class X implements A{
    void showName(){
        System.out.print("my name is X");
    }
}

class Y implements A{
    void showName(){
        System.out.print("my name is Y");
    }
}

Теперь, основываясь на потребностях вашего клиента, вы можете создать конкретный класс, который отвечает вашим требованиям. У вас может быть N реализаций для N клиентов.

class Test{

    public static void main (String [] a){
        /* For client X */
        A a1 = new X();
        a1.showName();

        /* For client Y */
        A a2 = new Y();
        a2.showName();
    }
}

P.S. Пожалуйста, обратите внимание на код, я написал его прямо в редакторе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...