【Java设计模式】结构型模式-外观模式

源代码:https://gitee.com/AgentXiao/FacadePattern
要点:
1、迪米特法则
2、外观模式的核心
3、外观模式使用频率很高

一、迪米特法则(最少知识原则)

一个软件实体应当尽可能少的与其他实体发生相互作用。

假设我们需要使用计算机处理一件事情,需要涉及开机、操作、关机三件事情,对老板、经理、员工来说这三步都是不可或缺的。但是这违反了迪米特法则,老板、经理、员工都需要和三个步骤打交道。

外观模式的核心在于为系统提供统一的子接口,封装子系统的复杂性,便于客户调用。也就说,将开机、操作、关机三件事情封装在一起由某程序负责,老板、经理、员工只需要告知程序员即可完成三个步骤。

使用外观模式.png

在该例子中,三个步骤只是简单地定义为方法,我们可以将其类比为一个类,如果不适用外观模式,客户就需要和这三个类打交道,使用外观模式之后只需要和一个类打交道。

二、实现

1、三个步骤

/**
 * @ClassName StartCom
 * @Description 开启电脑
 * @Author xwd
 * @Date 2018/10/25 11:06
 */
public class StartCom {
    public void startComputer(){
        System.out.println("开启电脑");
    }
}
/**
 * @ClassName SolveQues
 * @Description 解决问题
 * @Author xwd
 * @Date 2018/10/25 11:07
 */
public class SolveQues {
    public void solveQuestion(){
        System.out.println("解决问题");
    }
}

/**
 * @ClassName ShutDownCom
 * @Description 关闭电脑
 * @Author xwd
 * @Date 2018/10/25 11:07
 */
public class ShutDownCom {
    public void shutdownComputer(){
        System.out.println("关闭电脑");
    }
}

2、外观接口

/**
 * @ClassName Programer
 * @Description 程序员
 * @Author xwd
 * @Date 2018/10/25 11:06
 */
public class Programer {
    public void solveTask(){
        StartCom sc = new StartCom();
        sc.startComputer();
        SolveQues so = new SolveQues();
        so.solveQuestion();
        ShutDownCom sd = new ShutDownCom();
        sd.shutdownComputer();
    }
}

3、测试

/**
 * @ClassName Client
 * @Description 测试外观模式
 * @Author xwd
 * @Date 2018/10/25 11:10
 */
public class Client {
    public static void main(String[] args) {
        Programer programer = new Programer();
        programer.solveTask();
    }
}

4、测试结果

测试结果

三、总结

使用频率很高。哪里都会遇到。各种技术和框架中,都有外观模式的使用。如:JDBC封装后的,commons提供的DBUtils类。

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

相关阅读更多精彩内容

  • 系统会随着演化变得非常复杂,最终形成大量的(并且有时是令人迷惑的)类和交互,这种情况并不少见。许多情况下,我们并不...
    flowerAO阅读 268评论 0赞 1
  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,928评论 0赞 14
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 4,140评论 3赞 14
  • 从明天起对自己好点 饭吃得准时点 晚上睡得早点 学习努力点 一个人过得开心点 事情想的简单点 看不到的尽头想少点 ...
    koko空空阅读 255评论 0赞 4
  • 本想在丽江束河再留一天,但晚上看到了一条求伴信息,次日就和兰妮走在向大理的路上。兰妮选的是大丽路,不是214国道。...
    Q伯伯阅读 568评论 0赞 49

友情链接更多精彩内容