I thought a lot about this, and I think I have several possible solutions.
- Add a method to the view class to create a subordinate dialog
- Create a factory that generates the model, view. and controller for subordinate dialogue
Method 1
class ParentView extends JDialog implements IParentView { public IChildView newChildView(...) { return new ChildView(...); }
Method 2
// During testing, create a mock ChildFactory and assign it to instance class ChildFactory implements IChildFactory { private static IChildFactory instance; public static ChildFactory getInstance() { if (instance == null) { instance = new ChildFactory(); } return instance; } public static void setInstance(IChildFactory factory) { instance = factory; } public void createChild(IParentView parent) { IChildView view = new ChildView(parent); ChildController controller = new ChildController(view); view.setVisible(true); } } interface IChildFactory { void createChild(IParentView parent); } class ParentController { private IParentView view; public ParentController(IParentView view) { this.view = view; } public void showChildView() { ChildFactory.getInstance().createChild(view); } } // ParentView class similar to method 1
Ralph source share