设计模式是个很神奇的玩意,很早就像接触他。但是苦于自己水平不行,学业不精,一直没能如愿。现在终于开
始设计模式的了,真是爽啊。希望自己能一步一个脚印的鉴定的走下去。
今天先学的第一个设计模式(适配器)模式。需求是这样的。可能设计一个火箭仿真程序来利用你所一共得火箭的
信息,你发现已有的类可以实现客户提出的功能,但是这个类是和客户提出的借口是相对独立的,只是方法名不同而
已,这是,你就可以使用Adapter模式。
首先贴出来假设客户提出的接口
package com.bird.inter; /** * 用户需要接口要求 * @author Bird * */ public interface RocketSim { public double getMass(); public double getThrust(); public void setTim(double t); }
开发者手头有一个程序完成了客户需要的部分功能,但是相对于客户的接口是独立的,只是方法名称不同,但是里
面有很复杂的业务逻辑,需要复用,但是又需要满足客户提交的接口的请求。下面把这个类贴上
package com.bird.exit; /** * 需要复用的类 * @author Bird * */ public class PhysicalRocket{ @SuppressWarnings("unused") private double burnArea; private double burnRate; @SuppressWarnings("unused") private double fuelMass; private double totalMass; public PhysicalRocket(double burnArea, double burnRate, double fuelMass, double totalMass) { this.burnArea = burnArea; this.burnRate = burnRate; this.fuelMass = fuelMass; this.totalMass = totalMass; } public double getBurnTime(){ //假设这里有复杂的代码需要重用 System.out.println("调用PhysicalRocket类的getBurnTime方法"); return 0; } public double getMass(){ //假设这里有复杂的代码需要重用 System.out.println("调用PhysicalRocket类的getMass方法"); return totalMass; } public double getThrust(){ //假设这里有复杂的代码需要重用 System.out.println("调用PhysicalRocket类的getThrust方法"); return burnRate; } }然后为了实现代码和复用和完成用户的需求,我们使用Adapter设计模式,继承原来的类,然后实现接口,直接调用父类的方法就算完事,成功的实现了代码的复用,这就是Adapter设计模式
package com.bird.newClass; import com.bird.exit.PhysicalRocket; import com.bird.inter.RocketSim; /** * 新类,实现接口继承需要复用的类 * @author Administrator * */ public class OozinozRocket extends PhysicalRocket implements RocketSim { @SuppressWarnings("unused") private double time; public OozinozRocket(double burnArea, double burnRate, double fuelMass, double totalMass) { super(burnArea, burnRate, fuelMass, totalMass); } @Override public double getMass() { //复用代码 return super.getMass(); } @Override public double getThrust() { //复用代码 return super.getThrust(); } @Override public void setTim(double t) { this.time = t; } }