Ho due Classi, con comportamenti molto simili, entrambi da una libreria di terze parti. Entrambi devono essere compilati con qualche oggetto valore e inviati a code specifiche per la registrazione. Si prega di notare che entrambi non hanno un genitore comune.
Mi sto grattando la testa per scoprire i modi per refactoring questo. Ecco lo sceanrio.
Classe 1: Apple Classe 2: arancione
Sfortunatamente, Apple e Orange non sono classi figlio di Fruit E non posso cambiarli per estendere una classe base. I costruttori di Apple e Orange hanno diverse firme.
Codice corrente:
if(isApple){
Apple apple = new Apple(....);
apple.setColor(Color.RED);
apple.setPrice(10);
apple.setCount(1000);
AppleMQObject applMQObject = new AppleMQObject(apple);
Producer appleProducer = Factory.create("apple-producer");
appleProducer.send(applMQObject);
}else{
Orange orange = new Orange(...);
orange.setColor(Color.ORANGE);
orange.setPrice(30);
orange.setCount(100);
OrangeMQObject oMQObject = new oMQObject(orange);
Producer orangeProducer = Factory.create("orange-producer");
orangeProducer.send(orangeMQObject);
}
Posso spostare il codice MQ in un metodo comune. Ma come gestire la situazione mela / arancia.