これらのどれが最もクリーンまたは使用するのに最適であると考えられるのか、そしてその理由は何か疑問に思っています。
1つは乗客のリストを公開し、ユーザーが追加や削除などを行えるようにします。もう1つはリストを非表示にし、ユーザーが乗客を列挙して特別な方法で追加することのみを許可します。
例1
class Bus
{
public IEnumerable<Person> Passengers { get { return passengers; } }
private List<Passengers> passengers;
public Bus()
{
passengers = new List<Passenger>();
}
public void AddPassenger(Passenger passenger)
{
passengers.Add(passenger);
}
}
var bus = new Bus1();
bus.AddPassenger(new Passenger());
foreach(var passenger in bus.Passengers)
Console.WriteLine(passenger);
例2
class Bus
{
public List<Person> Passengers { get; private set; }
public Bus()
{
Passengers = new List<Passenger>();
}
}
var bus = new Bus();
bus.Passengers.Add(new Passenger());
foreach(var passenger in bus.Passengers)
Console.WriteLine(passenger);
私が言う最初のクラスはよりよくカプセル化されています。そして、この正確なケースでは、それがより良いアプローチかもしれません(おそらくバスに残っているスペースがあることを確認する必要があるためなど)。しかし、2番目のクラスも役立つ場合があると思いますか?クラスがリストを持っている限り、そのリストがどうなるかをクラスが本当に気にしない場合のように。どう思いますか?