本片文章是java设计模式的外观模式。

facade,外观模式。咋一看,不是很明白什么意思。 记住外观,什么是外观?就是我不知道里面的是什么,就只需要会外观就好了。 那就很容易了。 我之前做fabric测试(论坛有),需要首先把以前乱七八糟的容器都关了,然后启动需要用的镜像,检查下状态,工作了才能进行下一步。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package top.txiner.facade;

/**
 * @author : hundred
 * time: 18-1-16
 * website : http://txiner.top
 * 懵懂的小白
 */
public interface Docker {
    void clear();
    void start();
    void check();
    void work();
}

指令也都不复杂,但是每天都要敲一遍很累啊。真的是不胜其烦。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
public class DockerImpl implements Docker {
    @Override
    public void clear() {
        System.out.println("clear old containers");
    }

    @Override
    public void start() {
        System.out.println("Start relevant containers");
    }

    @Override
    public void check() {
        System.out.println("check working status");
    }

    @Override
    public void work() {
        System.out.println("docker works");
    }
}

如果我有个助手就好了,我给他说,帮我启动docker,它就自动把这些流程启动了。我不用管它是怎么做的,具体的流程,只要工作了就好了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public class Assistant {
    private Docker docker=new DockerImpl();

    public void start(){
        docker.clear();
        docker.start();
        docker.check();
        docker.work();
    }

}

好了,智能助手创建好了。我们启动吧!

1
2
3
4
5
6
public class Me {
    public static void main(String[] args) {
        Assistant siri=new Assistant();
        siri.start();
    }
}

好啦,问题解决了!

.................分割线.................. 我在看这个的时候,突然跟代理模式有点混淆了。 实际这两者是不一样的。这个是屏蔽内在的细节,而代理模式是你的每个细节可以由别人帮忙完成。 大家可以看下我的代理模式的文章,进行对比下。