美文网首页
【Java设计模式】结构型模式-外观模式

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

作者: 灰色孤星 | 来源:发表于2018-10-25 11:16 被阅读0次

    源代码: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类。

    相关文章

      网友评论

          本文标题:【Java设计模式】结构型模式-外观模式

          本文链接:https://www.haomeiwen.com/subject/drsqtqtx.html