家门口每年春天都有这种白色很大只的鸟 也不知道叫啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了家门口每年春天都有这种白色很大只的鸟 也不知道叫啥?相关的知识,希望对你有一定的参考价值。
图中的这种鸟叫做白鹭。
白鹭,又叫白鹭鸶,南方热带地区很多见,到了夏天,中部地区比如湖南,江西等地也经常能看到,以小型动物和昆虫为食。白鹭通体雪白,飞行姿势也很漂亮,唐张志和曾有“西塞山前白鹭飞,桃花流水鳜鱼肥”的诗句。
个人以前很奇怪,国人这么喜欢吃野味,怎么到处还是能看到,应该是肉不好吃吧。
参考技术A 白鹭(学名:Little Egret),别名小白鹭、白鹭鸶、白翎鸶、春锄、白鸟,中型涉禽,属于鹭科白鹭属。分布遍及亚洲中部和南部、欧洲南部、非洲和澳洲等地区。在中国,主要分布在长江以南,其中在四川、云南、广东、台湾、海南等地为留鸟,其他地区为夏候鸟。一般栖息于池塘、湖泊、稻田。群集活动。以小型动物、昆虫为食。 参考技术B 这不是鸽子吗 参考技术C 不知道🤷🏻♂️这种编程方法叫啥?它很糟糕吗?
【中文标题】这种编程方法叫啥?它很糟糕吗?【英文标题】:What is this programming method called? And is it bad?这种编程方法叫什么?它很糟糕吗? 【发布时间】:2015-09-02 02:26:02 【问题描述】:最近在我的 Unity 项目中,我发现要创建一个更加模块化的应用程序,在一个包含对所创建的所有或部分对象的引用的类中拥有一个静态 List 会有所帮助,以便可以从其他部分轻松访问它们的程序。下面是一个例子:
private static List<Canvas> availableCanvases = new List<Canvas>();
void Start ()
availableCanvases.Add(this);
public static void AddComponentToCanvas(Transform component)
for (int i = 0; i < availableCanvases; i++)
//Make sure the canvas still exists
if (availableCanvases[i] != null)
component.SetParent(availableCanvases[i]);
return;
else
availableCanvases.RemoveAt(i);
i--;
//Reached if no canvas found
//Create new canvas or create error etc...
这只是允许在运行时实例化的对象将自己添加到可用画布中,而无需通过 findWithTag 或 findWithType 方法访问它,如果使用过多会损害性能。
这是不好的做法还是好的做法?我的同事认为这代表了单例编程,但它当然不是,因为它允许多个对象存在和使用。
【问题讨论】:
我不明白你的情况,为什么availableCanvases
永远是null
?
更新到正确的条件 if (availableCanvases[i] != null)
请不要使用unity 标签来询问有关游戏引擎的问题。使用unity3d。
“但它当然不会,因为它允许多个对象存在和使用。” - 不,我想你会找到你的“同事”想说的是availableCanvases
本质上是作为包含类范围内的singleton,不是包含在availableCanvases
中的项目。跨度>
【参考方案1】:
这本质上是一个基于单例模式的Service Locator“Anti Pattern”(惊喜)。但是,不是检索服务实例,而是检索对象实例。
不管名称如何,这实际上并没有创建一个更加模块化的应用程序。相反,您在整个应用程序中创建了硬依赖关系,这使得将其拆分为各个组件变得更加困难。
Martin Fowler 很好地记录了这种模式。您可以找到更多信息here。
【讨论】:
本来打算试一试的,但你的回答很划算。 知道 Unity 的 GameObject.FindWithTag("Tag") 函数是如何工作的吗?或者它是否也使用服务定位器,因为它需要静态引用? @LuminaryPromotions 不幸的是,Unity3d 没有很好地记录 GameObject.FindWith... 方法的内部工作原理。他们只详细说明如何称呼他们。此外,这些方法最终会调用 CLR 级别的函数,而且关于这些的信息更少。因此,您的猜测与我的猜测一样好,这些方法实际上是如何工作的。以上是关于家门口每年春天都有这种白色很大只的鸟 也不知道叫啥?的主要内容,如果未能解决你的问题,请参考以下文章