それで、私が一般的なオブジェクト、Personを持っているとしましょう。人には名前と性別があります。名前は文字列である必要があり、性別はまたはである必要がありmale
ますfemale
。また、Personオブジェクトの配列を持ち、セットに対する操作を許可するコレクションオブジェクトPersonListもあります(たとえば、特定の性別の人々のリストを返します)。
一方では、コンストラクター内のデータを使用してPersonListを作成すると便利です...
list = new PersonList([new Person('Alice', 'Female'), ...]);
...しかし、データが有効かどうかはわかりません。無効なPersonオブジェクトを許可し、それらにアクセスするときにそれらの有効性を確認するか、Personにvaild()メソッドを与えて...と言うことができます。
list = new PersonList();
alice = new Person('Alice', 'Female');
if (alice->valid()) list->add(alice);
...またはadd()内のvalid()をチェックするかもしれません。しかし、valid()メソッドがあるのは奇妙に思えます。
一般的に、これらのオブジェクトをどのようにインスタンス化しますか?これは主観的なものですか、それとも普遍的な「正しい方法」がありますか?