gpt4 book ai didi

c# - 构造一个(有点)复杂的对象

转载 作者:太空狗 更新时间:2023-10-29 18:15:31 25 4
gpt4 key购买 nike

当我创建类时,简单的构造函数往往是常态。在我当前的一个项目(一个电影库)中,我有一个 Movie 域对象。它有许多属性,导致构造函数如下:

public Movie(string title, int year, Genre genre, int length, IEnumerable<string> actors)
{
_title = title;
_year = year;
_genre = genre;
_length = length;
_actors = new List<string>(actors);
}

这并不可怕,但也不简单。使用工厂方法(static Movie CreateMovie(...))或对象生成器是否值得?有什么典型的域类实例化模式吗?

更新:感谢您的回复。尽管我学到了一些在更复杂的情况下会有用的东西,但我最初可能对这个问题想得太多了。我现在的解决方案是将标题作为唯一必需的参数,其余作为命名/可选参数。这似乎是构建此域对象的全面理想方式。

最佳答案

如果您使用的是 .NET 4.0,您可以使用 optional/named parameters简化接受多个参数的对象的创建,其中一些参数是可选的。当您想避免许多不同的重载以提供有关对象的必要信息时,这很有用。

如果您使用的不是 .NET 4,您可能需要使用 Object Builder模式组装你的类型。 Object builder 需要一些努力来实现,并与您的输入保持同步 - 因此这样做是否有足够的值(value)取决于您的情况。

我发现构建器模式在组装层次结构时最有效,而不是具有一堆属性的类型。在后一种情况下,我通常要么重载要么可选/命名参数。

关于c# - 构造一个(有点)复杂的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com