なぜ構成は「拡張にオープンで、変更に近い」原則に従う必要があるのですか?
私は理解しています:クラスに機能を追加したい場合は、新しいコードを記述し、構成を使用してそのコードに到達するだけです。
しかし、コンポジションがあるコードを変更するだけですか?そのコードに構成を追加して、そのコードを変更するからです。
例:
以前は、これです:
public class Example{
public void Walk(){
//walking
}
}
以降:
public class Example{
RunClass r = new RunClass(); // I add this
public void Walk(){
//walking
}
public void Run(){ // I also add this
r.run();
}
}
つまり、このクラスを変更したということです。