package com.test.design.facade;
public interface ILetterProcess {
public void writeContext(String context);
public void fillEnvelope(String address);
public void sendLetter();
}
package com.test.design.facade;
public class LetterProcess implements ILetterProcess {
@Override
public void fillEnvelope(String address) {
System.out.println("邮寄地址为:" + address);
}
@Override
public void sendLetter() {
System.out.println("信件已发送!");
}
@Override
public void writeContext(String context) {
System.out.println("正在写信,内容为:" + context);
}
}
package com.test.design.facade;
public class PostOffice {
private LetterProcess letterProcess = new LetterProcess();
public void sendLetter(String address, String context){
letterProcess.writeContext(context);
letterProcess.fillEnvelope(address);
//在这中间还可增加一些自己的业务操作
letterProcess.sendLetter();
}
}
package com.test.design.facade;
public class Client {
public static void main(String[] args) {
PostOffice office = new PostOffice();
String address = "北京市海淀区";
String context = "这就是门面模式";
office.sendLetter(address, context);
}
}
这是一个很好的封装方法,一个子系统比较复杂的实话,比如算法或者业务比较复杂,就可以封装出一个或多个门面出来,项目的结构简单,而且扩展性非常好。还有,在一个较大项目中的时候,为了避免人员带来的风险,也可以使用这个模式,技术水平比较差的成员,尽量安排独立的模块(Sub System),然后把他写的程序封装到一个门面里。使用门面模式后,对门面进行单元测试,约束项目成员的代码质量,对项目整体质量的提升也是一个比较好的帮助。