Padrão de registro versus padrão de localizador de serviço versus recipiente de injeção de dependência

Existe alguma diferença entre eles, em vez de definir e obter objetos em uma matriz por chave?

class Registry
{
private $container=array();
  public static function Set($name,$object){
    self::$container[$name]=$object;
  }
  public static function &Get($name){
  return self::$container[$name];
  }
}

questionAnswers(1)

yourAnswerToTheQuestion