概述: 当我们要实现一个复杂的功能时,这个功能可能是由好几个部分组成。在本文中我们以信息为例,写一封信我们大概需要4个步骤 写信,写信封,装信封,投 递。也就是说在代码我们需要调用4次方法我们才能完成这样的功能,代码的可性都维护性和拓展性都非常低。今天我们这里讲的门面模式就是将这些方法都 封装起来,只对外提供一个方法,将写信,装信封,投递这些操作全都封装到内部,这样可以极大的提高代码的拓展性和可维护性
代码如下:
//定义一个写信的接口
public interface LetterPro { //内容 public void writeContext(String context); //信封 public void fillEnvelope(String address); //把信放到信封里 public void letterInotoEnvelope(); //邮递 public void sendLetter(); }
//写信的实现类
public class Letter implements LetterPro { @Override public void writeContext(String context) { // TODO Auto-generated method stub Log.i("flag", "写信"); } @Override public void fillEnvelope(String address) { // TODO Auto-generated method stub Log.i("flag", "写信封"); } @Override public void letterInotoEnvelope() { // TODO Auto-generated method stub Log.i("flag", "把信装到信封中"); } @Override public void sendLetter() { // TODO Auto-generated method stub Log.i("flag", "邮寄"); } }
/** * 在这个类中,把写信的过程都封装到这里面,只对外提供一个方法,得到信的内容和地址就可以了 * 这就是门面模式 */ Letter letter = new Letter(); public void sendMessage(String content,String address){ //写信 letter.writeContext(content); //写信封 letter.fillEnvelope(address); //装信封 letter.letterInotoEnvelope(); //发出 letter.sendLetter(); }
/** * 门面模式就是将方法实现的细节都封装到内部,只对外提供方法,极大的提高了拓展性 */ /** * 在这里我们以 写信为例 * 以前我们写信要经过4个步骤, 写内容,装信封,写地址,邮寄 * 过程太繁琐,我们可以将这些方法都封装起来,只对外提供一个方法,在内部把这些事情做完 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Facade facade = new Facade(); facade.sendMessage("内容", "地址"); }
github地址为: https://github.com/zhouwei5200/FacadePattern