门面模式,就是将一些复杂的小系统整合起来,为用户的使用提供一个简单的接口,统一一个高层接口给用户使用,打个比方,电视的按钮就是一个门面模式,因为我们换台只需要拧按钮,而不必关心电视机里面经历了哪些过程。
现在我用一个邮局递信的例子来说明问题:
我现在定义的邮局和现实中的邮局有些差别,假设有这样一个邮局,当我们想发信时,我们只需要提供信的内容和地址,其他的都由邮局来做。
那么先定义写信流程的接口:
public interface LetterWriter
{
//写信的内容
public void writeContent(String content);
//写信的地址
public void writeAddress(String address);
//将信放入信封
public void inMailer();
//寄信
public void sendMail();
}
实现这个接口:
public class LetterWriterImpl implements LetterWriter
{
@Override
public void inMailer()
{
// TODO Auto-generated method stub
System.out.println("放入信封");
}
@Override
public void sendMail()
{
// TODO Auto-generated method stub
System.out.println("发信");
}
@Override
public void writeAddress(String address)
{
// TODO Auto-generated method stub
System.out.println("写地址:"+address);
}
@Override
public void writeContent(String content)
{
// TODO Auto-generated method stub
System.out.println("写内容:"+content);
}
}
现在还没有邮局,那么如果用户想发信,必须经历如下过程
public static void main(String[] args)
{
LetterWriter writer=new LetterWriterImpl();
writer.writeContent("我是袁泽瑶");
writer.writeAddress("湖北省武汉市武汉理工大学鉴湖校区");
writer.inMailer();
writer.sendMail();
}
现在在附近有一个邮局成立了:帮你完成写信,写地址,装进信封,发信,你只需要提供内容和地址即可
public class PostOffice
{
private LetterWriter writer=new LetterWriterImpl();
//发送邮件
public void Send(String address,String content)
{
writer.writeContent(content);
writer.writeAddress(address);
writer.inMailer();
writer.sendMail();
}
}
那么此时如果一个用户想发信:非常简单
public static void main(String[] args)
{
PostOffice office=new PostOffice();
office.Send("Hello","Good");
}