适配器设计模式---接口适配

来源:互联网 发布:网络政治参与缺陷 编辑:程序博客网 时间:2024/06/08 18:04
package cn.icer.simulation.InterfaceAdapter;/** * 火箭 * @author icer * @date:2013-12-27 * */public interface SkyRocket {/** * * @return 燃料的剩余量 */public abstract double getMass();/** *  * @return 产生的推力 */public abstract double getThrust();/** *  * @param time 燃烧时间 */public abstract void setSimTime(double time);}

package cn.icer.simulation.InterfaceAdapter;/** * 火箭 * @author icer * @date 2013-12-27 * */public class PhysicalRocket {private double burnArea;//燃烧面积private double burnRate;//燃烧率private double initFuelMass;//燃料private double totalMass;//燃料总量private double totalBurnTime;//总燃烧时间//重力加速度private static double SPECIFIC_IMPULSE = 620;// Newtons/Kg//燃料密度private static double FUEL_DENSITY = 1800;// Kg / M**3public PhysicalRocket(double burnArea, double burnRate, double fuelMass, double totalMass) {this.burnArea = burnArea;this.burnRate = burnRate;this.initFuelMass = fuelMass;this.totalMass = totalMass;double initialFuelVolume = fuelMass / FUEL_DENSITY;this.totalBurnTime = initialFuelVolume / (burnArea * burnRate);}/** *  * @return 燃烧时间 */public double getBurnTime(){return totalBurnTime;}/** *  * @param time 燃烧时间 * @return 现在剩余的燃料 */public double getMass(double time){if ( time > totalBurnTime)return totalMass - initFuelMass;double burntFuelVolume = burnArea * burnRate * time;return totalMass - burntFuelVolume * FUEL_DENSITY;}/** *  * @param time 燃烧时间 * @return 点火以来产生的总推力 */public double getThrust(double time){if (time > totalBurnTime)return 0;return FUEL_DENSITY * SPECIFIC_IMPULSE * burnArea * burnRate;}}

package cn.icer.simulation.InterfaceAdapter;/** * 火箭 * @author icer * @date 2013-12-27 * */public class IcerRocket extends PhysicalRocket implements SkyRocket {private double time;public IcerRocket(double burnArea, double burnRate, double fuelMass,double totalMass) {super(burnArea, burnRate, fuelMass, totalMass);}@Overridepublic double getMass() {return getMass(time);}@Overridepublic double getThrust() {return getThrust(time);}@Overridepublic void setSimTime(double time) {this.time = time;}}


0 0
原创粉丝点击