Один из способов управления версиями интерфейсов с помощью пространств имён — использование встроенных пространств имён. 1
Для этого нужно создать одно родительское пространство имён и инкапсулировать каждую версию интерфейса в своём собственном пространстве имён, вложенном в родительское. 1 Пространство имён, которое содержит самую последнюю или основную версию, квалифицируется как встроенное и представляется так, будто оно является непосредственным членом родительского пространства имён. 1 Клиентский код, вызывающий Parent::Class, автоматически привязывается к новому коду. 1 Клиенты, которые предпочитают использовать старую версию, могут по-прежнему получить доступ к ней, используя полный путь к вложенному пространству имён, содержащему данный код. 1
Также пространства имён позволяют инкапсулировать типы в именованные пространства, что даёт возможность получить лучшую структуру в коде, а также иметь несколько классов с одинаковыми именами, если они существуют в отдельных пространствах имён. 3