public interface RateCalculator { public double getAnnualRate(); public double getMonthlyRate(); public double getDailyRate(); }
public class FixedRateCalculator implements RateCalculator { private double rate; public void setRate(double rate) { this.rate = rate; } public double getAnnualRate() { return rate; } public double getMonthlyRate() { return rate / 12; } public double getDailyRate() { return rate / 365; } }
<bean id="rateCalculator" class="com.apress.springrecipes.interest.FixedRateCalculator"> <property name="rate" value="0.05" /> </bean>
public interface InterestCalculator { public void setRateCalculator(RateCalculator rateCalculator); public double calculate(double amount, double year); }
class SimpleInterestCalculator def setRateCalculator(rateCalculator) @rateCalculator = rateCalculator end def calculate(amount, year) amount * year * @rateCalculator.getAnnualRate end end
配置文件:
<lang:jruby id="interestCalculator" script-source="classpath:com/apress/springrecipes/interest/ SimpleInterestCalculator.rb" script-interfaces="com.apress.springrecipes.interest.InterestCalculator"> <lang:property name="rateCalculator" ref="rateCalculator" /> </lang:jruby>
class SimpleInterestCalculator implements InterestCalculator { RateCalculator rateCalculator double calculate(double amount, double year) { return amount * year * rateCalculator.getAnnualRate() } }
配置文件:
<lang:groovy id="interestCalculator" script-source="classpath:com/apress/springrecipes/interest/SimpleInterestCalculator.groovy"> <lang:property name="rateCalculator" ref="rateCalculator" /> </lang:groovy>
RateCalculator rateCalculator; void setRateCalculator(RateCalculator aRateCalculator) { rateCalculator = aRateCalculator; } double calculate(double amount, double year) { return amount * year * rateCalculator.getAnnualRate(); }
配置文件:
<lang:bsh id="interestCalculator" script-source="classpath:com/apress/springrecipes/interest/SimpleInterestCalculator.bsh" script-interfaces="com.apress.springrecipes.interest.InterestCalculator"> <lang:property name="rateCalculator" ref="rateCalculator" /> </lang:bsh>