把真正的功能、做的事情按照一定规则封装起来,对外只提供封装封装好的方法。
我的理解的门面就是,你只能看到门外面的东西,屋里具体如何实现根本不知道
在屋里面做了什么根本不用关心,你只需要调用封装好的方法,传需要的参数。
比如我们在网上买东西,下单后提供住址和手机号就行了,
商家怎么发,用哪家快递公司,是空运还是陆运,几天能到,我们都不知道,也不用知道,这些步骤按照逻辑组织起来,封装起来。
我们用在京东买东西的例子,理解下门面模式:
public interface OrderHandle {
public void updateOrder(); //修改订单状态 已支付
public void fillSendInfo(String address,String phone); //填写收件人地址、电话
public void sendGoods(); //发货
}
public class OrderHandleImpl implements OrderHandle{
@Override
public void updateOrder() {
System.out.println("订单状态:未支付->已支付");
}
@Override
public void fillSendInfo(String address, String phone) {
System.out.println("填写发货单 地址:"+address+",手机号:"+phone);
}
@Override
public void sendGoods() {
System.out.println("商家正在出货 ...");
}
}
业务逻辑简单时,我们可以直接调用接口的实现类,
那如果业务复杂,且方法调用按照一定得顺序或规则组织呢?
这时可以把实现类的这些方法按照一定顺序或规则封装起来,对外只提供封装的方法,即门面。
/**
* 京东
*
* @author: wangmingxin1
* @create: 2018-11-06 16:10
**/
public class JD {
public void buySomething(String address, String phone){
OrderHandle orderHandle = new OrderHandleImpl();
//按照一定的顺序封装这些方法
orderHandle.updateOrder();
orderHandle.fillSendInfo(address,phone);
orderHandle.sendGoods();
}
}
只用调用buySomething( ),不用关心内部怎么实现
我们用顾客在京东买东西模拟这一过程
/**
* 顾客类
*
* @author: wangmingxin1
* @create: 2018-11-06 15:58
**/
public class Customer {
public static void main(String[] args){
JD jd = new JD();
String address = "北京市昌平区建明里小区xxxxxx";
String phone = "18850079747";
jd.buySomething(address,phone);
}
}
运行
以上只是我对门面模式浅显的理解,如有不对的地方,敬请指正
说点什么
您将是第一位评论人!