我正在尝试设计视频租赁软件。我希望Movie
课程中列出了在电影中扮演的Actor *
。我还希望Actor
列出他已采取行动的Movie *
。
如何确保两个列表之间没有不一致?
如何初始化Movie
对象,Actor
对象不存在[但必须创建]?
答案 0 :(得分:1)
您可以通过控制用户如何管理关系和保护不变量来确保两者之间的一致性。例如,确保Actor
的{{1}}和Movies
Movie
集合的Actors
集合只能通过您控制的方法进行操作:
class Actor
{
private readonly IList<Movie> movies = new List<Movies>();
public IEnumerable Movies
{
get
{
return this.movies;
// This could be return this.Movies.AsReadOnly() if
// you're concerned someone might still try and cast
// from IEnumerable
}
}
}
此外,确保拥有类在任何一方更改时都保持关系的完整性:
class Actor
{
public void AddMovie(Movie movie)
{
this.movies.Add(movie);
movie.AddActor(this);
}
}
<强> N.B。此技术还必须在Movie
类上复制。
我不明白你在问题的第二部分提出的要求。