私は、デザインパターン、クリーンコード、その他のもののようなオブジェクト指向の概念を研究していますが、今後の進め方について疑問が残っています。たとえば、私の例を見てみましょう。クラスのモデリングの助けが必要
私はモデルであるPersonクラスを持っています。年齢が生年月日に対応するかどうかをチェックし、名前に有効な文字が含まれているかどうかをチェックするなど、いくつかのバリデーションを人に追加したい。
私には2つのアプローチがありますが、どちらを使うべきかわかりません。
アプローチ1: 私はと呼ばれる新しいクラスを作成:
class ValidatePerson {}
とクラスメソッドがあります:「validateAge()」と「validateName()」と私が持っています必要なすべてvallidationを新しいメソッドを実装する。
アプローチ2: 私はと呼ばれる抽象クラスを作成:すべての検証にはいくつかのcommumのメソッドを持っていますし、私が持っているでしょう ValidatePersonを{}:
class ValidatePersonAge extends ValidatePerson { validate();}
class ValidatePersonName extends ValidatePerson {validate();}
私はアプローチ2のために選びたい、原因追加しなければならないすべての新しい検証ルールは新しいクラスになり、他の検証ルールには影響しません。同様に、新しいルールに必要なcommumメソッドで何かを変更する必要がある場合は、単に上書きすることができます。最初のアプローチでは、私は別のメソッドを追加し、別のメソッドを作成するか、すでにクラッシュするかもしれない他のメソッドのために既に動作しているメソッドを変更する必要があります。
私はプログラミングに新しいので、私はいくつかの助けとそれについての説明を見たいと思っているので、このすべてのことに混乱しています。また、クラスは変更のために閉じられるべきであり、拡張のために開かれるべきであることを読んだことがあります。
あなたがここで何を求めているかははっきりしません。 _正確に何を探していますか? – Oded