似乎网络上到处都有人们自动装配实现类 RestTemplate 而不是它的接口 RestOperations 的例子。即使在 Spring 手册和文档中,接口也被称为“不经常使用”。像这里https://spring.io/guides/gs/sumption-rest/这样的官方指南有以下示例:
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
Run Code Online (Sandbox Code Playgroud)
然后将它们注入到类中
@Autowired
public SomeClass(RestTemplate rt) {
this.rt = rt;
}
Run Code Online (Sandbox Code Playgroud)
我一直认为在具体实现中接线是不好的做法。为什么这里的实现在 spring 文档和更广泛的网络中如此普遍?
我有两个类,Character和Npc,它们都继承自一个名为'Actor'的基类.考虑以下两种基本相同的方法:
public static Dictionary<uint, Npc> drawnNpcs = new Dictionary<uint, Npc>();
public static Dictionary<uint, Character> drawnCharacters = new Dictionary<uint, Character>();
Run Code Online (Sandbox Code Playgroud)
private GameObject DrawCharacter(ActorWrapper actorToDraw)
{
GameObject obj;
if (Data.drawnCharacters.ContainsKey(actorToDraw.Id))
{
Character character;
Data.drawnCharacters.TryGetValue(actorToDraw.Id, out character);
obj = character.gameObject;
obj.SetActive(true);
}
else
{
obj = new GameObject("Actor");
Character character = obj.AddComponent<Character>();
character.Id = actorToDraw.Id;
Data.drawnCharacters.Add(character.Id, character);
}
return obj;
}
private GameObject DrawNpc(ActorWrapper actorToDraw)
{
GameObject obj;
if (Data.drawnNpcs.ContainsKey(actorToDraw.Id))
{
Npc npc;
Data.drawnNpcs.TryGetValue(actorToDraw.Id, out npc);
obj = npc.gameObject;
obj.SetActive(true);
}
else
{ …Run Code Online (Sandbox Code Playgroud)