/ / Ako objekt používa metódu iného objektu? [closed] - java, objekt, správy

Ako objekt používa metódu iného objektu? [closed] - java, objekt, správy

Mám napríklad a class Doctor ktorý chce využívať služby a class Postman.

Ako to vyzerá z hľadiska kódu?

public class Doctor
{
...

void doCheckup(Patient);
void sendMail(){   // want to use services of a Postman here }
}

public class Postman
{
void sendMail(...){ ... }
}

Mohol by som to definovať Doctor::sendMail() ako

void sendMail()
{
Postman A = new Postman();
A.sendMail(...);
}

Je to správne?

Ak áno, prečo by mal "doktor" vytvoriť "poštára"? Znie to naozaj ďaleko od scenárov reálneho života. Je to spôsob, akým sú správy zdieľané medzi objektmi?

odpovede:

1 pre odpoveď č. 1

Ak sa snažíte vytvoriť "skutočný svetový model" vecí, potom by ste mali globálny PostOffice objekt, ktorý by obsahoval mnoho Postmanov.

Doktor by mohol byť súčasťou DoctorOffice alebo nemocnice

Doktor by mal premennú člena smerujúcu na svojho poštára

Doctor.Postman = aPostmanObject;

Potom nechal poštár robiť prácu.

Doctor.Postman.SendMail();

Za predpokladu, že ste urobili "SendMail" verejnú metódu Postman (čo by bolo, pretože to robí ako verejná služba)


2 pre odpoveď č. 2

Menej idiomatickým spôsobom by bolo mať niečo ako:

void sendMail(Postman postman) {
postman.sendMail(...);

Nevytvárajte iný objekt vo vnútri prvého.

Na sidenote, Doctor::sendMail je C + + syntax. V jazyku Java nie je žiadne ::