Supposons que vous ayez un objet Person
et qu'il comporte une méthode, promote()
, qui le transforme en objet Captain
. Comment appelez-vous ce type de méthode/interaction?Comment appelez-vous une méthode d'un objet qui change de classe?
Il se sent aussi comme une inversion de:
myCaptain = new Captain(myPerson);
Edit: Merci à toutes les réponses. La raison pour laquelle je rencontre ce modèle (en Perl, mais pertinent n'importe où) est purement pour la commodité. Sans connaître les offres de mise en œuvre, vous pourriez dire que la classe Captain
"a un" Person
(je me rends compte que ce n'est peut-être pas le meilleur exemple, mais soyez assurés qu'il ne s'agit pas d'une sous-classe).
mise en œuvre, je suppose:
// this definition only matches example A
Person.promote() {
return new Captain(this)
}
personable = new Person;
// A. this is what i'm actually coding
myCaptain = personable.promote();
// B. this is what my original post was implying
personable.promote(); // is magically now a captain?
donc, littéralement, il est juste une méthode pratique pour la construction d'un Captain
. Je me demandais simplement si ce modèle a été vu dans la nature et s'il avait un nom. Et je suppose que oui, ça ne change pas vraiment la classe autant que ça en retourne une autre. Mais théoriquement, je ne me soucie pas vraiment de l'original. Ken ++, J'aime comment vous signalez un cas d'utilisation. Parfois, il serait vraiment génial de changer quelque chose en place, disons, un environnement sensible à la mémoire.
Besoin de changer la classe à OCaptain afin que vous obteniez OCaptain myCaptain – belgariontheking
Damn vous Walt Whitman – TheTXI
@Rich B, je ne comprends pas vous éditant le capitaine à oCaptain. Soin d'expliquer? – strager