The main reason why names ending in Manager
or Browser
or Editor
are sometimes bad is that they're vague and unspecific, and don't say enough about what the FooManager
class is actually doing with Foo
s.
For exactly that reason, there is no general answer to the question "what should they be replaced with?".
A class name should (so far as is possible given its brevity) say what an instance of the class does. If you really can't say anything more about what a FooManager
does than that it manages Foo
s, then call the class FooManager
(and consider whether perhaps its respponsibilities should be divided among multiple other classes with better-focused responsibilities). If you can say something more specific, and you can do so briefly, then that should indicate what name would be better.
(Of course if your class is called WebBrowser
or TextEditor
or SeniorManager
then none of the above applies; that isn't the sort of thing the folklore about not giving classes that sort of name is aimed at. :-) )