AngularJS - dependencias del módulo, choque de nombres

tengo dostercero módulos, ambos definiendo una fábrica con el mismo nombre. Obviamente, no tengo ningún control sobre el nombre de esos módulos sin recurrir a un kludge.

Además, tengo dos más,interno módulos, cada uno con uno diferente de los dostercero módulos como una dependencia (como a continuación). Estaba seguro de que no podía acceder a los componentes de un módulo que no figuraba en las dependencias del módulo actual, pero resultó que estaba equivocado.

Aquí incluso siown1 depende dethirdParty1 (que tienehello definido comohello world) se está haciendohi there (dethirdParty2) en el controlador. Lo mismo es para el par de otros módulos.

¿Hay alguna forma de "aislar" módulos para que solo pueda usar cosas de las que explícitamente dependa? Si no, ¿cuál es el punto de tener módulos si puedo alcanzar cualquier cosa en cualquier momento (suponiendo que el módulo principal de la aplicación lo tenga como dependencia)? Además, si tengo dos módulos con componentes llamadoshello ¿Cómo puedo saber cuál se va a utilizar?

Aquí está jsbin para esohttp://jsbin.com/vapuye/3/edit?html,js,output

angular.module('app', ['own1', 'own2']);

//third-party modules
angular.module('thirdParty1', []).factory('hello', function () {
  return 'hello world';
});

angular.module('thirdParty2', []).factory('hello', function () {
  return 'hi there';
});

// "own" modules
angular.module('own1', ['thirdParty1']).controller('Own1Ctrl', function(hello) {
  this.greet = hello;
});

angular.module('own2', ['thirdParty2']).controller('Own2Ctrl', function(hello) {
  this.greet = hello;
});

Y el resultado de:

<body ng-app="app">
  <div ng-controller="Own1Ctrl as own1">
    Own1: {{ own1.greet }}
  </div>
  <div ng-controller="Own2Ctrl as own2">
    Own2: {{ own2.greet }}
  </div>
</body>

Es :

Own1: hi there
Own2: hi there

Respuestas a la pregunta(2)

Su respuesta a la pregunta