je codes écrit quelque chose comme ci-dessous:chercher des conseils pour plus élégante façon d'initialiser la variable super-classe de sous classe
abstract class ZmqSubscriber {
protected String zmqPort, zmqIp, zmpTopic;
public void start() {
init();
// connect to zeroMQ with initialized zmq port, ip, topic and receive data
}
abstract protected void init();
}
abstract class Collector extends ZmqSubscriber {
@Override
protected void init() {
super.zmqIp = this.zmqIp;
super.zmqPort = this.zmqPort;
super.zmqTopic = this.zmqTopic;
}
public void otherMethod() { //blablabla }
}
class Syncronizer extends ZmqSubscriber() {
//blablabla
}
class SensorCollector extends Collector {
private String zmqPort, zmqIp, zmpTopic;
@Override
protected void init() {
//this.zmqIp, this.zmpPort, this.zmqTopic will be already initialized at this moment
super.zmqIp = this.zmqIp;
super.zmqPort = this.zmqPort;
super.zmqTopic = this.zmqTopic;
super.init();
}
// getters & setters for zmq port, ip, topic
}
class BeconCollector extends Collector {
// blablabla like SensorCollector
}
J'ai vraiment besoin à trois niveaux et étend ce code fonctionne bien. Mais je pense que la façon d'initialiser la variable d'instance de super classe (zmqPort, zmqIp, zmqTopic) n'est pas élégante, je ne peux pas dire exactement pourquoi je pense que la partie n'est pas élégante, mais je suis juste "Feeling" c'est pas juste quand je regarde le code, peut-être c'est à cause du code dupliqué dans la méthode init() ...
Quelqu'un pourrait-il suggérer une architecture plus élégante?
grâce
Si ce code fonctionne correctement, vous devez le soumettre sur notre [Code Review] (https: //codereview.stackexchange. com /) site de la soeur. –
Le 'init' et super' init' semble être le même code –
@Scary Wombat désolé, il y avait une partie manquante dans mon code précédent, maintenant je les ai raffinés, pourriez-vous vérifier à nouveau? merci –