一:门面模式
1.引出问题
我们日常工作中,这种思想贯穿生活。比如我们启动态势电脑时,我们只需要打开电脑电源键,然后就等着他自己启动吧。如下图
哈哈哈,对于电脑具体部分,不太熟悉,只能作这个不恰当的例子了。但是正好符合这个思想了,我不知道台式机内部启动顺序,但是,我按下电源键,他就启动了。
2.引入概念
门面模式其实是我们运用最广泛的一种模式,我们在开发对外API都是符合这种思想。
这里有3个角色:
客户角色:第三方或者其他的调用端。例如上面的人
门面角色:对外提供接口访问的角色。例如上面的电脑
子系统角色:各种子系统角色。
注意:这里各个子系统是相互独立的,也就是相互不影响。所以上面的例子可以不是太恰当。
二:代码
1.子模块角色
package test;
public class CPU {
public void start(){
System.err.println("cpu启动啦");
}
}
package test;
public class Disk {
public void start(){
System.err.println("显卡启动了");
}
}
package test;
public class Look {
public void start(){
System.err.println("显示器启动啦!");
}
}
2.门面角色以及实现
package test;
/**
*
* ClassName:启动电脑的接口 <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2019年7月18日 下午8:57:19 <br/>
*
* @author monxz
* @version
* @since JDK 1.8
*/
public interface ComputerStart {
public void start();
}
package test;
public class Computer implements ComputerStart{
@Override
public void start() {
CPU cpu=new CPU();
cpu.start();
Disk disk=new Disk();
disk.start();
Look look=new Look();
look.start();
System.err.println("=========电脑启动了啊");
}
}
3.客户端角色或者测试
public class test {
public static void main(String[] args) {
ComputerStart cs=new Computer();
cs.start();
}
}
三:说明
其实门面模式看起来是最简单的,但是运用是最广泛的。
门面模式的子系统是相互独立的。对外接口的实现可以随意调用各种子系统,但是你调用者不知掉哈哈哈。