白话-23种设计模式5-外观模式

举报
object 发表于 2022/06/29 11:03:38 2022/06/29
1.3k+ 0 1
【摘要】 一、白话  由于我是做java的web应用的,这个模式用的就比较多了,用的时候也没感觉到一种模式,现在想想确实web应用就是一个外观模式。现实举例,我们去吃烤肉,如果我们自己烤,我们需要自己拿肉,开火,刷油,翻滚菜..,烤熟。 经过一系列的动作,最后才完成得到烤肉这个结果。但是,有些店是有提供烤肉的服务的,你只需要跟店家说,帮我烤一份牛肉,然后店家就会自己去完成拿肉,开火,刷油一系列动作,最...

一、白话

  由于我是做java的web应用的,这个模式用的就比较多了,用的时候也没感觉到一种模式,现在想想确实web应用就是一个外观模式。现实举例,我们去吃烤肉,如果我们自己烤,我们需要自己拿肉,开火,刷油,翻滚菜..,烤熟。 经过一系列的动作,最后才完成得到烤肉这个结果。但是,有些店是有提供烤肉的服务的,你只需要跟店家说,帮我烤一份牛肉,然后店家就会自己去完成拿肉,开火,刷油一系列动作,最后我们也完成了得到烤肉这个结果。我们只需要使用店家提供的服务,不需要管具体的操作细节,就是外观模式设计。web应用一个一个接口也就是类似店家提供的烤肉服务一样的。

二、定义

  外观模式定义了一个高层接口,用以屏蔽内部的细节,使得用户端只需跟接口发生调用,而无需内部细节,简化操作

三、示例

 

/**
 * 外层类-高层接口,如烤肉服务
 */
public class FacadeApi {
    // 烤肉服务
    public String barbecued() {
        FacadeService facadeService = new FacadeService();
        facadeService.fire(); // 开火
        facadeService.oil(); // 放油
        facadeService.seasonings(); // 调料
        return "肉烤好了";
    }
}
/**
 * 子系统-内部细节 烤肉细节
 */
public class FacadeService {
    public void fire() {
        System.out.println("起锅开火");
    }

    public void oil() {
        System.out.println("倒油");
    }

    public void seasonings() {
        System.out.println("放入调料");
    }
}
public class FacadeApplication {

    public static void main(String[] args) {
        // 用户直接调用外部类高层接口-烤肉服务
        FacadeApi facadeApi = new FacadeApi();
        String barbecued = facadeApi.barbecued();
        System.out.println(barbecued);
    }

}

结果示例:

四、总结

  优点:一定程度上降低了系统耦合性。简化了用户操作。用户无需关注细节,只关注高层接口。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。