Welcome everyone

门面模式

设计模式 汪明鑫 685浏览 0评论

把真正的功能、做的事情按照一定规则封装起来,对外只提供封装封装好的方法。

 

我的理解的门面就是,你只能看到门外面的东西,屋里具体如何实现根本不知道
在屋里面做了什么根本不用关心,你只需要调用封装好的方法,传需要的参数。

 

比如我们在网上买东西,下单后提供住址和手机号就行了,
商家怎么发,用哪家快递公司,是空运还是陆运,几天能到,我们都不知道,也不用知道,这些步骤按照逻辑组织起来,封装起来。

 

我们用在京东买东西的例子,理解下门面模式:

 

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);
    }

}

 

运行

 

以上只是我对门面模式浅显的理解,如有不对的地方,敬请指正

 

 

 

转载请注明:汪明鑫的个人博客 » 门面模式

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz