На таком языке, как Java, я бы сделал что-то вроде:
package com.whatever.blah;
public class A {
private Set<B> patients = new HashSet<B>;
public void operateOn(B patient) {
patient.startRecoveringFromOperation(this);
patients.add(patient);
}
public List<B> getPatients() {
return patients;
}
}
public class B {
private Set<A> surgeons = new HashSet<A>;
//this has package access to `A` can access it but other classes can't
void startRecoveringFromOperation(A theSurgeon) {
surgeons.add(theSurgeon);
}
public List<A> getSurgeons() {
return surgeons;
}
}
Это действительно ничего особенного, кроме использования доступа к пакету , чтобы разрешить A
доступ к B
методу startRecoveringFromOperation()
, скрывая метод от большинства других классов. В других языках вы можете использовать другой подход для достижения этой цели. Например, в C ++ вы можете объявить A
как friend
из B
.