If you really only need one instance of the Controller class you could think of using the singleton design pattern. This would look like this:
// Singleton
public class Controller
{
// a Singleton has a private constructor
private Controller()
{
}
// this is the reference to the single instance
private static Controller _Instance;
// this is the static property to access the single instance
public static Controller Instance
{
get
{
// if there is no instance then we create one here
if (_Instance == null)
_Instance = new Controller();
return _Instance;
}
}
public void MyMethod(Computer computer, Recorder recoder)
{
// Do something here
}
}
So in your code you can simply access the single instance of Controller like this:
Controller.Instance.MyMethod(computer, recorder);
Since the constructor is private you can't mess by creating an additional instance from outside the class. And you don't need to save any associations to the Controller class inside Computer and Recorder classes.