This is what I like about Objective C++ - you can trade off those forces whichever way makes sense on a case by case basis :-)If you want further evidence of how different Design Patterns need to be solved (if at all) in different languages just look at Visitor.