`
dilantaya
  • 浏览: 103416 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Briger模式

阅读更多



此模式的特点是 使抽象与抽象的实现同时处在了变化之中,其关键是引入了一个接口或抽象类
父类声明了一个抽象方法,此抽象方法的方法名与接口定义的方法相同,子类实现了这个抽象方法但是得依赖加入的动态接口或抽象类声明,这样子类的实现也可以根据抽象的改变而动态改变
抽象父类 ---飞船

public abstract class FlyShip {
      public shipPower sp;
      
	  public FlyShip(){
		  sp = ShipPowerBuilder.getSp();
	  } 
	  
      public abstract void startPowerEngine();
	
}


抽象接口:描述飞船发动机的类型

public interface shipPower {
     void startPowerEngine();
}


2个实现接口的实现类,标明了两种类型
电子发动机

public class ElecticPowerEngine implements shipPower {

    public void startPowerEngine() {
        System.out.println("ElecticPowerEngine is online");
	}

}

核发动机
public class NuclerPowerEngine implements shipPower {

	public void startPowerEngine() {
		// TODO Auto-generated method stub
		System.out.println("nuclerPowerEngine is on line");

	}

}




2艘飞船通过继承父类而来
1盖亚
   public class Gaya extends FlyShip {
	
	
	public Gaya() {
		super();
		// TODO Auto-generated constructor stub
	}

	@Override
	public void startPowerEngine() {
		// TODO Auto-generated method stub
		this.sp.startPowerEngine();
	}
}



2诺亚
   public class Noya extends FlyShip {
	
	

	public Noya() {
		super();
		// TODO Auto-generated constructor stub
	}

	@Override
	public void startPowerEngine() {
		// TODO Auto-generated method stub
		this.sp.startPowerEngine();
	}

}


配置抽象实现的类,在调用子类行为前,先指定抽象的属性,在这个例子里就是电力发动机或核动力发动机
 public class ShipPowerBuilder {
    private static shipPower sp; 
    
    public ShipPowerBuilder(shipPower sp){
    	this.sp=sp;
    }

	public static shipPower getSp() {
		return sp;
	}
}

测试

// TODO Auto-generated method stub
ShipPowerBuilder builder = new ShipPowerBuilder(new NuclerPowerEngine());
       Noya noya = new Noya();
       noya.startPowerEngine();

结果
nuclerPowerEngine is on line
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics