Sobes.tech
Senior

Javasolj egy helyes öröklődési modellt a Button és Input osztályok számára a jelenlegi helyett, ahol az Input kiterjeszti a Button-t.

sobes.tech MI

Válasz az MI-től

A Buttonból származó Input öröklése nem logikus, mivel az Input és a Button különböző elemek, különböző szemantikai és viselkedési jellemzőkkel.

Sokkal helyesebb egy közös alap osztályt definiálni, például UIControl vagy FormElement, amely tartalmazza az összes űrlapelem közös tulajdonságait és metódusait. Ezután a Button és az Input ebből öröklődnek külön osztályként.

TypeScript példával:

class UIControl {
  constructor(public id: string) {}
  render() {
    // közös render metódus
  }
}

class Button extends UIControl {
  click() {
    // kattintási logika
  }
}

class Input extends UIControl {
  value: string = '';
  setValue(val: string) {
    this.value = val;
  }
}

Ez a megközelítés tükrözi a valódi hierarchiát, és elkerüli a helytelen kapcsolódásokat a osztályok között.