任何人都可以帮助我确定在以下代码段中使用哪种设计模式。它看起来有点像一半战略模式但泛型。这是一个简单的示例代码,并没有从实际的代码库中取得。识别此代码的设计模式
我之所以说它看起来像一个策略模式,是因为它似乎正在使用控制器中的泛型转移行为逻辑,如DogController<DogRepository>
。它本可以像animalController.Repository = new DogRepository()
。
void Main()
{
var animalController = new DogController();
animalController.PrintName();
}
abstract class AnimalControllerBase<TRepository> where TRepository : IAnimalRepository
{
protected abstract TRepository AnimalRepository {get;}
public void PrintName()
{
Console.WriteLine(AnimalRepository.Get());
}
}
class DogController : AnimalControllerBase<DogRepository>
{
protected override DogRepository AnimalRepository
{
get
{
return new DogRepository();
}
}
}
class CatController : AnimalControllerBase<CatRepository>
{
protected override CatRepository AnimalRepository
{
get
{
return new CatRepository();
}
}
}
interface IAnimalRepository
{
string Get();
}
class DogRepository : IAnimalRepository
{
public string Get()
{
return "Hello, I am Steve the dog..";
}
}
class CatRepository : IAnimalRepository
{
public string Get()
{
return "Hello, I am Michael the cat..";
}
}
看起来很像namedropping,特别是“存储库”部分。如果有任何设计模式,这里有一个小工厂方法。版本库和控制器可以完全忽略! –