私のchildClassメソッドのgetInfoFromDB()とsaveToDB()が別のロジックを行う必要がある場合、childClassの作成方法は分かりますか?彼らがきた - 私はむしろあなた自身の圧延よりも、春のJDBCテンプレートクラスを使用してお勧めする、ことを言っテンプレートメソッドパターン
public abstract class BaseClass
{
public Object executeTrans(Template template)
{
tx.begin();
template.doTransaction();
tx.commit();
}
}
public interface Template
{
public void doTransaction();
}
public childClass extends BaseClass
{
public List<String> getInfoFromDB()
{
executeTrans(
new Template()
{
public void doTransaction()
{
...do get info from DB here.
}
}
);
}
public void saveToDB()
{
executeTrans(
new Template()
{
public void doTransaction()
{
...do save to DB here.
}
}
);
}
}
:
public abstract class BaseClass {
public abstract Object doTransaction();
public Object executeTrans() {
//do something
tx.begin();
this.doTransaction();
tx.commit();
}
}
public childClass extends BaseClass{
@Override
public Object doTransaction(){
//overide to get something from database so can only be used for getInfoFromDB() and not for saveToDB()
return something;
}
public List<String> getInfoFromDB(){
super.executeTrans();
}
public void saveToDB(){
super.executeTrans() ;
}
}
pls私が間違っていると私を修正します。 childClassにBaseClassを継承させることにより、 saveToDB()とgetInfoFromDB()のexecuteTrans()メソッドは同じexecuteTrans()のtx.beginとtx.close()を呼び出します。これは大丈夫でしょうか?別の新しいインスタントにする必要がありますか? – cometta
私はそこに置かれている "テンプレート"タイプは何ですか? – cometta
は、このようなテンプレートクラスです - > class Template(){public void doTransaction(){}; }? – cometta