I have two classes that each need an instance of each other to function. Ordinarily if an object needs another object to run, I like to pass it in the constructor. But I can’t do that in this case, because one object has to be instantiated before the other, and so therefore the second object does not exist to be passed to the first object’s constructor.
I can resolve this by passing the first object to the second object’s constructor, then calling a setter on the first object to pass the second object to it, but that seems a little clunky, and I’m wondering if there’s a better way:
backend = new Backend(); panel = new Panel(backend); backend.setPanel();
I’ve never put any study into MVC; I suppose I’m dealing with a model here (the Backend), and a view or a controller (the Panel). Any insights here I can gain from MVC?
It’s time to take a look at MVC. 🙂 When you have a model-view-controller situation, the consensus is that the model shouldn’t be aware of the view-controller (MVC often plays out as M-VC), but the view is invariably aware of the model.
If the model needs to tell the view something, it does so by notifying its listeners, of which it may have multiples. Your view should be one of them.