Gra*_*lin 8 .net c# dns constructor
当我创建类时,简单的构造函数往往是常态.在我目前的一个项目,一个电影库,我有一个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);
}
Run Code Online (Sandbox Code Playgroud)
这并不可怕,但也不简单.是否值得使用工厂方法(static Movie CreateMovie(...))或可能是对象构建器?是否有用于实例化域类的典型模式?
更新:感谢您的回复.我最初可能是在思考这个问题,尽管我已经学到了一些在更复杂的情况下会有用的东西.我现在的解决方案是将标题作为唯一必需的参数,其余的作为命名/可选参数.这似乎是构建此域对象的全面理想方式.
如果您使用的是 .NET 4.0,则可以使用可选/命名参数来简化接受多个参数的对象的创建,其中一些参数是可选的。当您想要避免许多不同的重载以提供有关对象的必要信息时,这非常有用。
如果您不使用 .NET 4,您可能希望使用该Object Builder模式来组装您的类型。对象生成器需要花费一些精力来实现,并与您的类型保持同步 - 因此这样做是否有足够的价值取决于您的情况。
我发现构建器模式在组装层次结构时最有效,而不是具有一堆属性的类型。在后一种情况下,我通常要么重载,要么使用可选/命名参数。
| 归档时间: |
|
| 查看次数: |
3953 次 |
| 最近记录: |