外观模式 - 多色按压笔你使过没?

1 介绍


经过上一讲代理模式的学习,<a>小白</a>从自动贩卖机中买了画简笔画所需要的装备,听说还玩了一把大转盘。

<a>小白</a> : 大哥大哥,快看,你看我抽到大奖了,但我不知道这个玩意儿怎么玩,你帮我看看呗。

多色按压笔

<a>Acey</a>:我的弟,腻害了,这个是多色按压笔。想要正确的使用它,我们需要先来了解下外观模式的概念。

外观模式(Facade)是一组类似功能的类群。

<a>小白</a> :then?
<a>Acey</a> :......,(⊙﹏⊙),好吧,你又没听懂,所谓功能类似的类群就好比笔芯,只是每支笔芯的颜色不同,多支笔芯就形成一个集群,外观模式呢就是为这类集群封装了下,就相当于装笔芯的笔盒。对于我们使用者来说,我们只需要拿着这个装有笔芯的笔盒就可以使用了多种颜色的笔了。而不需要再去买不同颜色的笔了。
<a>小白</a>:I konw,I know。那我要怎么使用不同颜色的笔呢?
<a>Acey</a>:我们现在就来看看怎么实现。

2 实现


首先我们要知道外观模式的几个角色

  • Facade:为调用方提供简单的调用接口。(笔盒)
  • Package:功能提供者(笔芯)
  • Clients:调用者。

一步,先准备好笔芯

Red.class / Blue.class / Yellow.class

public class Blue {
    public void write(){
        System.out.println("蓝色笔");
    }
}
public class Red {
    public void write(){
        System.out.println("红色笔");
    }
}
public class Red {
    public void write(){
        System.out.println("红色笔");
    }
}

二步,向笔盒中装笔芯

Facade.class

public class Facade {
    private Blue blue;
    private Yellow yellow;
    private Red red;
    //装笔芯
    public Facade() {
        blue = new Blue();
        yellow = new Yellow();
        red = new Red();
    }

    // 使用红笔
    public void writeRed() {
        red.write();
    }

    // 使用蓝笔
    public void writeBlue() {
        blue.write();
    }

    // 使用黄笔
    public void writeYellow() {
        yellow.write();
    }
}

三步,试试好使不

MainClass.class

public class MainClass {
    public static void main(String[] args) {
        Facade pen = new Facade();
        pen.writeBlue();//使用蓝笔
        pen.writeRed();//使用红笔
        pen.writeYellow();//使用黄笔
    }
}
运行结果

<a>小白</a>:(。^▽^),好腻害,那么我们为什么要用这么个模式呀,我们直接去买各个颜色的笔不好嘛?
<a>Acey</a> :你想哦,如果我们去买单个颜色的笔的话,我们可能需要跑好几个店去买,如果我们只是去买一个装有很多笔芯的笔的话我们是不是节省了很多时间呀,这样我们同样可以使用多种颜色,而且我们只需要关注笔盒中的笔芯就好了,不需要再去关注各种颜色的笔了。
<a>小白</a>:哦哦,原来是这样,那么我们要换笔芯的话不就非常麻烦了?
<a>Acey</a>:没错,这就是外观模式的缺点了,虽然提高了我们的灵活性,但是笔盒与笔芯之间还是存在耦合的,不利于后期的修改。
<a>小白</a>:好的,b( ̄▽ ̄)d ,我知道啦,我会好好善待这支笔的。

喜欢的话戳一下喜欢呗。
有什么建议的话希望大家能在下方回复(●'◡'●)
上一篇:代理模式 - 你买的笔多少钱?
下一篇:组合模式 - 哥,我被我妈骂了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容