• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:设计模式9-外观模式没那么高大上

java 搞代码 3年前 (2022-01-27) 41次浏览 已收录 0个评论
文章目录[隐藏]

开局一张图,剩下全靠写…

外观模式是什么

外观模式,其实是用来暗藏零碎的复杂性的,屏蔽掉了背地简单的逻辑,向用户提供简略的能够拜访零碎的接口,也是属于结构型模式的一种 。

举个例子,比方咱们的Java 三层MVC架构,对外提供的是controller,然而controller外部可能调用了很多service,service又调用了一些mapper,反正就是外部很简单,然而对外只是一个接口,一个门面,内部看起来是简略的,外观很难看,实际上,你都懂。

再举个栗子,咱们用的电脑,其实外部也是极其简单的,然而咱们操作的时候,曾经不论内存,cpu,磁盘,显卡这些怎么工作了,甚至更加底层还有二进制,硬件之类的,咱们只须要开机,做咱们想做的事件,比方Ctrl+C,Ctrl+V,在漂亮丑陋的界面上操作就能够了。

外观模式的角色

外观模式次要包含几个角色:

  • 外观角色:糅合多个子系统性能,对外提供一个独特的接口
  • 子系统的角色:实现零碎的局部性能
  • 客户角色:通过外观角色拜访各个子系统的性能

长处与毛病

长处:

  • 缩小零碎依赖,这里指的是对外的零碎依赖
  • 进步灵活性
  • 进步安全性

毛病:

  • 把货色糅合到一个人身上,带来未知的危险
  • 减少新的子系统可能须要批改外观类或者客户端的源代码,违反了“开闭准则”

测试例子

咱们以电脑为例子,先给电脑的每个部件形象定义成为一个组件,赋予一个work()的办法:

<code class="java">public interface Component {
    public void work();
}

再定义内存,磁盘,cpu三种不同组件,别离实现下面的接口,各自工作:

<code class="java">public class Disk implements Component{
    @Override
    public void work() {
        System.out.println("磁盘工作了...");
    }
}

public class CPU implements Component{
    @Override
    public void work() {
        System.out.println("CPU工作了...");
    }
}


public class Memory implements Component{
    @Override
    public void work() {
        System.out.println("内存工作了...");
    }
}

而后以上组件可能是穿插在一起工作的,咱们模仿一下开机过程,操作系统别离调用他们:

<code class="java">public class OperationSystem {
    private Component disk;
    private Component memory;
    private Component CPU;

    public OperationSystem() {
        this.disk = new Disk();
        this.memory = new Memory();
        this.CPU = new CPU();
    }

    public void startingUp(){
        System.out.println("筹备开机...");
        disk.work();
        memory.work();
        CPU.work();
    }
}

而应用人调用的其实是操作系统的开机启动办法,不会间接调用到外部的办法,也就是屏蔽掉了所有的细节:

<code class="java">public class PersonTest {
    public static void main(String[] args) {
        OperationSystem operationSystem = new OperationSystem();
        operationSystem.startingUp();
    }
}

执行后果如下:

<code class="txt">筹备开机...
磁盘工作了...
内存工作了...
CPU工作了...

最初简略小结一下,外观模式,能够成为门面模式,也就是屏蔽掉外部细节,只对外提供接口,实现所需的性能,外部性能可能很简单,以上咱们模仿的只是简略操作。学会了么?

【作者简介】
秦怀,公众号【秦怀杂货店】作者,集体网站:http://aphysia.cn,技术之路不在一时,山高水长,纵使迟缓,驰而不息。

剑指Offer全副题解PDF

开源编程笔记


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:设计模式9-外观模式没那么高大上

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址