抽象工厂实现坦克大战(java实现)

上一篇《抽象工厂实现坦克大战(c++实现)》

需求:坦克大战

创建两种坦克

坦克类型 射程 速度
b70 70米 时/70公里
b50 50米 时/70公里


 


class Function{
	public String mStr;
	Function(String str){
		mStr = str;
		exe();
	}
	public void exe() {
		System.out.println(mStr);
	}
};

// interface
interface IFun{
	void exe();
}
interface ISpecificationOfTank{
	int getSpecification();
}
//abstract
abstract class ConcreteFun implements IFun{
	public ConcreteFun(ISpecificationOfTank s) {
		mSpecificationOfTank = s;
	}
	protected ISpecificationOfTank mSpecificationOfTank;
}
class ConcreteSpecification implements ISpecificationOfTank{
	int mSpecification;
	public ConcreteSpecification(int value) {
		mSpecification = value;
	}
	public int getSpecification() {
		return mSpecification;
	}
}
// Concrete
class Shot extends ConcreteFun{
	public Shot(ISpecificationOfTank s) {
		super(s);
	}
	public void exe() {
		Function f = new Function("发射距离"+mSpecificationOfTank.getSpecification()+"米");
	}
}
class Run extends ConcreteFun{
	public Run(ISpecificationOfTank s) {
		super(s);
	}
	public void exe() {
		Function f = new Function("速度"+mSpecificationOfTank.getSpecification()+"公里");
	}
}
class Tank{
	Shot mShot;
	Run mRun;
	public Tank(Shot s,Run r) {
		mShot = s;
		mRun = r;
	}
	public void exe() {
		mShot.exe();
		mRun.exe();
	}
}
// AbstractFactory
interface IFactory{
	Shot createShot();
	Run createRun();
}
abstract class Factory implements IFactory{
	ISpecificationOfTank mSpecificationOfTank;
	public Shot createShot() {
		return new Shot(mSpecificationOfTank);
	}
	public Run createRun() {
		return new Run(mSpecificationOfTank);
	}
}
class B70Factory extends Factory{
	public B70Factory() {
		mSpecificationOfTank = new ConcreteSpecification(70);
	}
} 
class B50Factory extends Factory{
	public B50Factory() {
		mSpecificationOfTank = new ConcreteSpecification(50);
	}
}
public class Client {
	public static void main(String[] args) {
		System.out.println("hello worldff !");
		B70Factory f = new B70Factory();
		Tank t = new Tank(f.createShot(),f.createRun());
		t.exe();
	}
}

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/88741640