您的位置:首页 > 编程语言 > Java开发

外观模式(Facade)实现坦克大战(java实现)

2019-03-27 10:47 239 查看

目录:《一个实例讲完23种设计模式》

当前:外观模式(Facade)

需求:坦克大战

创建两种坦克

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

类图

设计说明

该实例需求(与上面的公共需可能并不完全相同,这里是为了体现该模式的价值)

将发射炮弹和走行的具体机能由动力驱动层去实现。

但是这些机能要对电子操作层提供一个接口。

模式说明

这是一个很简单的模型,没啥好说的。

这是一个架构模型,一个模块对外提供的接口必须由一个外观类出承载。

所有的项目都这么设计,这几乎是一个规范。

简单一句话:就是把该模块的所有对外公开的函数,都交给一个接口负责,这个接口就是外观。

代码

[code]class Function{
static Function mFunction = new Function();
static Function get(String mStr) {
mFunction.setOperation(mStr);
return mFunction;
}
public String mOperation;
public void setOperation(String mStr) {
this.mOperation = mStr;
}
public void exe() {
System.out.println(mOperation);
}
};
interface IPowerFacade{
void shot();
void run();
}
class Shot{
void shot() {
Function.get("炮弹发射").exe();
}
}
class Run{
void run() {
Function.get("速度200/公里").exe();
}
}

class PowerFacade implements IPowerFacade{
Shot mShot;
Run mRun;
public PowerFacade() {
mShot = new Shot();
mRun = new Run();
}
public void shot() {
mShot.shot();
}
public void run() {
mRun.run();
}
}
class Controllayer{
PowerFacade mPowerFacade;
public void setmPowerFacade(PowerFacade mPowerFacade) {
this.mPowerFacade = mPowerFacade;
}
public void run() {
mPowerFacade.shot();
mPowerFacade.run();
}
}
public class Client {
public static void main(String[] args) {
System.out.println("hello world !");
Controllayer controllayer = new Controllayer();
PowerFacade facade = new PowerFacade();
controllayer.setmPowerFacade(facade);
controllayer.run();

}
}

运行结果

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: