Laravel.io
<?php

class RepositoryResolver {

    protected $repos = [];  

    const DEFAULT_REPO = BaseRepository::class;
    
    public functuion __construct(Application $app)
    {
        $this->app = $app;
    }

    public function addRepo($model, $repository)
    {
         $this->repos[$model] = $respository;
    }
   
    public function resolve($model)
    {
          if(isset($this->repos[$model])){
             return $this->app->make($model);
         }
         
         return $this->getDefaultRepository($model);
    }
    
    public function getDefaultRepository($model)
    {
           return $this->app->make(static::DEFAULT_REPO, compact('model'));
    }
}

Please note that all pasted data is publicly available.