標準機能を備えた製品があり、クライアントは製品を要件に合わせてカスタマイズします。しかし現在、彼らはコア製品コードに変更を加えています。j2EE アプリケーションを拡張可能またはカスタマイズ可能にするために使用できるアプローチを知りたいです。これを詳しく説明するには、以下をお読みください: 例: 以下のクラスを検討してください:
Class A{
public void doSomething(Object o){
// standard product functionality goes here.
// due to client customizations. client code also goes here.
}
}
上記のクラスでは、クライアントはコア製品コードにコードを追加しました。理想的には、開閉原理に基づいて製品コードを変更しないでください。
現在、クライアントがメソッドにコードを直接追加することは許可していませんが、以下のようにカスタマイズ ポイントを提供しています。
Class A{
public ClassAExtension ext;
public void doSomething(Object o){
// standard product functionality goes here.
// client code goes in doClientCustomizations();
ext.doClientCustomizations(Object o);
}
}
したがって、クライアントは「ClassAExtension」クラスを使用して動作をオーバーライドします。ただし、このアプローチはまだそれほど洗練されておらず、製品コードがそのようなカスタマイズ ポイントでさらに雑然としています。
そのようなことをよりエレガントで効率的な方法で行うために、どのような異なるアプローチやフレームワークが利用できますか?