DAO は交換可能であるため、同じ型 (抽象クラスまたはインターフェイス) を継承します。したがって、 と書くことができますRoutingDetailsControllerDAO
。
共通のインターフェイスが という名前DetailsControllerDAO
で、2 つのメソッドがgetDetails
あり、getMoreDetails
内部にあるとします。コードは次のようになります。
public class RoutingDetailsControllerDAO implements DetailsControllerDAO {
private DetailsControllerDAO firstDAO;
private DetailsControllerDAO secondDAO;
protected DetailsControllerDAO getDAOToUse() {
return YOUR_BOOLEAN_CONDITION ? firstDAO : secondDAO;
}
@Override
public Details getDetails() {
return getDAOToUse().getDetails();
}
@Override
public Details getMoreDetails() {
return getDAOToUse().getMoreDetails();
}
// Insert firstDAO and secondDAO setters below
...
}
Spring XML 構成は次のとおりです。
<bean id="detailsController" class="com.something.detailsController" >
<property name="dao" ref="routingDetailsControllerDAO"/>
</bean>
<bean id="routingDetailsControllerDAO" class="com.something.RoutingDetailsControllerDAO">
<property name="firstDao" ref="firstDao"/>
<property name="secondDao" ref="secondDao"/>
</bean>