Original Post
I'm setting up my game clone using sets of MVC triads. For example, I have a Map class in which the model holds a text file of the game maze and does boundary checking, and the view holds the bitmap and is responsible for drawing to the screen. The controller sits between the two and essentially serves as the access point for the other two and has some logic inside. What I notice is that I seem to need to reproduce the model and view interfaces in the controller so that other classes can access them. Is this typical or do you usually expose the model and view to the outside so that you don't end up just piping a command from the controller to the view/model?? -Kirk edit: Continuing my example, I have an MVC triad for a World object. The WorldController is really the game engine and handles all the logic. It has a MapController object giving access to the maze map. What I find is that the MapController needs to supply access to View functions (such as LoadBitmap, DrawToTargetDC, etc.) and also needs to supply access to model functions (such as LoadMapFile, CheckMapPosition, etc.). Duplicating the interfaces just leads to piping commands: Controller::LoadMapFile("c:\\map") { m_Model->LoadMapFile("c:\\map"); } Controller::DrawToTargetDC(HDC TargetDC) { m_View->DrawToTargetDC(TargetDC); } It seems tedious and wasteful to duplicate the View and Model interfaces in the Controller, but it also seems to defeat the purpose to expose the Model and View objects to the outside. What am I missing??