1.設計の観点から、クラスに特定の役割を持たせたい場合は、インターフェイスを選択します。
2.変化し続ける動作がある場合は、それらを Abstract クラスまたは Interface にカプセル化し、それを拡張または実装して特定の機能を指定することをお勧めします。
////////////////////////////////////////編集: ////// ////////////////////////
あなたはDRY の原則 (Dont Repeat Yourself)に言及していると思います。この原則によれば、情報と行動を単一の賢明な場所に保管する方がよいでしょう。
しかし、同じ機能の異なるクラスでビヘイビアが異なる場合はどうなるでしょうか。
例:
Painting
を持つクラスと見なしpaint() Method
ます。
今
paint() メソッドには、ストローク、グライディング、シェーディングなどのスタイルを適用できます。
次に、そのメソッドを Abstract クラスまたは Interface にカプセル化することをお勧めします。
public interface Paint{
paintDoIt(String style);
}
面倒な作業ではなく、柔軟性と、あまり多くのクラスに触れたり、コードを壊したりせずに変更を加える機能を持つことです。
ソフトウェア エンジニアリングの定数は 1 つだけです CHANGE
。
だから私たちはそれに適応する必要があります。