Als Verfechter von tell don't ask Ich mag würde zeigen, wie diese kann ohne Getter erfolgen.
public class TellDontAsk {
interface MapSetter {
public void setMap(Map map);
}
interface MapGiver {
public void giveMap(MapSetter acceptMap);
}
public static void main(String[] args) {
HashMap<String, Integer> people = new HashMap<String, Integer>();
people.put("bob", 2);
people.put("susan", 5);
DataStorage ds = new DataStorage();
ds.setMap(people);
AnotherClass ac = new AnotherClass();
ds.giveMap(ac);
ac.displayMap();
}
public static class DataStorage implements MapSetter, MapGiver {
private Map map;
@Override
public void setMap(Map map) {
this.map = map;
}
@Override
public void giveMap(MapSetter acceptMap) {
acceptMap.setMap(map);
}
}
public static class AnotherClass implements MapSetter {
private Map map;
public void displayMap() {
System.out.println(map);
}
@Override
public void setMap(Map map) {
this.map = map;
}
}
}
Ausgänge:
{bob=2, susan=5}
Beachten Sie, wie DataStorage
keine Kenntnissen auf AnotherClass
Existenz hat? Noch kennt AnotherClass
über DataStorage
. Sie teilen nur eine Schnittstelle. Das heißt, Sie können in jeder Klasse tun, was Sie wollen, solange Sie diese Schnittstelle unterstützen.
BTW, die Klassen sind nur statisch, weil ich zu faul war, sie in ihre eigenen Dateien zu verschieben. :)
es als statischen globalen Variable definieren und dann können Sie für den Zugriff aus verschiedenen Klassen. 'public static HashMap people = new HashMap ();' –