设计模式-- 门面模式

门面模式的优点:

  1. 对调用者屏幕很多子系统的实现(比如说和别人公司对接,可能他们需要的一个功能,需要涉及你们公司很多个系统的关联都要修改才能实现,此时你只需要丢一个门面过去就可以了)
  2. 调用者无需知道他实现这个功能具体需要用到哪些子系统的(解耦)
  3. 当可以随意增加或删减子系统 (调用者无感知)

门面模式的缺点:

  1.  当增加子系统时可能带来未知风险
  2. 门面不符合开闭原则

下面以装修为例子说明一下:

最近同事二狗子要装修房子,他装修之前呢,得先找个设计师设计,然后还需要找个水电工给新房子改水电,再然后,还得找泥瓦工,刷墙贴瓷砖之类的,这个过程中要招人,谈价钱,跟进度,二狗子一个写代码的程序员,他哪会这些呀,太麻烦了,要是有人能帮他干就好了。

子系统-- 设计师


public class Designer {

    public void design() {
        System.out.println("设计师设计");
    }
}

子系统--水电工


public class WaterElectricWorker {

    public void work() {
        System.out.println("水电工修水电");
    }
}

子系统--泥瓦工


public class Bricklayer {

    public void work() {
        System.out.println("泥瓦匠贴瓷砖");
    }
}

.....其他子系统等忽略

使用门面模式--装修公司 (简单吧?二狗子只需要给钱把想要的效果告诉装修公司就可以了)


public class DecorationCompany {

    public static void decorate() {
        System.out.println("装修公司整合~");
        new Designer().design();
        new WaterElectricWorker().work();
        new Bricklayer().work();
        System.out.println("装修完毕");
    }
}

比较使用门面和不使用门面的代码如何写?如果有N个系统如果不使用门面模式,调用者需要实例化N次,如果是第三方对接不及时岂不是天天被吊死?说他们又改接口了,又改接口了。MMP;使用了门面模式之后,就不用被吊的那么惨啦 哈哈哈

public class DecorationTest {

    public static void main(String[] args) {
        // 不使用门面模式
        new Designer().design();
        new WaterElectricWorker().work();
        new Bricklayer().work();

        //  使用门面模式
        DecorationCompany.decorate();
    }
}

原文:【设计模式系列】通俗易懂的门面模式 - 掘金

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值