文档章节

设计模式-外观模式

月夜筱风
 月夜筱风
发布于 2017/08/29 17:57
字数 770
阅读 15
收藏 0

一,定义

输入图片说明

输入图片说明

就是把一堆类给放在一个方法(A)中去初始化,然后在A中写方法去组装那一堆类中的方法,对外所有的方法只调用A中的方法,以后只关心A中的方法,不用管那一堆类中的方法了

二,代码

  • 2.1,目录

输入图片说明

  • 2.2,代码
package com.boot.lijunhao.waiguan;

/**
 * 外观模式入口
 * Created by lijunhao on 2017/8/29.
 */
public class InClass {

    private MethodClassA methodClassA;

    private MethodClassB methodClassB;

    private MethodClassC methodClassC;

    public InClass() {
        //实例化所有的MethodClassA,MethodClassB,MethodClassC
        this.methodClassA = new MethodClassA();
        this.methodClassB = new MethodClassB();
        this.methodClassC = new MethodClassC();
    }

    //ABCD方法随意组合   --start
    public void methodA(){
        methodClassA.Amethod();
        methodClassB.Amethod();
        methodClassC.Cmethod();
    }

    public void methodB(){
        methodClassA.Amethod();
        methodClassB.Amethod();
    }

    public void methodC(){
        methodClassA.Dmethod();
        methodClassB.Dmethod();
        methodClassC.Cmethod();
    }

    public void methodD(){
        methodClassA.Dmethod();
    }
    //ABCD方法随意组合   --start
}

package com.boot.lijunhao.waiguan;

import lombok.extern.slf4j.Slf4j;

/**
 * Created by lijunhao on 2017/8/29.
 */
@Slf4j
public class MethodClassA {


    public void Amethod(){
        log.info("Amethod在类(MethodClassA.java:13)行:{}","A类中的方法a");
    }

    public void Bmethod(){
        log.info("Bmethod在类(MethodClassA.java:17)行:{}","A类中的方法b");
    }

    public void Cmethod(){
        log.info("Cmethod在类(MethodClassA.java:21)行:{}","A类中的方法c");
    }

    public void Dmethod(){
        log.info("Dmethod在类(MethodClassA.java:25)行:{}","A类中的方法d");
    }

}

package com.boot.lijunhao.waiguan;

import lombok.extern.slf4j.Slf4j;

/**
 * Created by lijunhao on 2017/8/29.
 */
@Slf4j
public class MethodClassB {


    public void Amethod(){
        log.info("Amethod在类(MethodClassB.java:13)行:{}","B类中的方法a");
    }

    public void Bmethod(){
        log.info("Bmethod在类(MethodClassB.java:17)行:{}","B类中的方法b");
    }

    public void Cmethod(){
        log.info("Cmethod在类(MethodClassB.java:21)行:{}","B类中的方法c");
    }

    public void Dmethod(){
        log.info("Dmethod在类(MethodClassB.java:25)行:{}","B类中的方法d");
    }
}
package com.boot.lijunhao.waiguan;

import lombok.extern.slf4j.Slf4j;

/**
 * Created by lijunhao on 2017/8/29.
 */
@Slf4j
public class MethodClassC {


    public void Amethod(){
        log.info("Amethod在类(MethodClassC.java:13)行:{}","C类中的方法a");
    }

    public void Bmethod(){
        log.info("Bmethod在类(MethodClassC.java:17)行:{}","C类中的方法b");
    }

    public void Cmethod(){
        log.info("Cmethod在类(MethodClassC.java:21)行:{}","C类中的方法c");
    }

    public void Dmethod(){
        log.info("Dmethod在类(MethodClassC.java:25)行:{}","C类中的方法d");
    }
}


package com.boot.lijunhao.waiguan;

import lombok.extern.slf4j.Slf4j;

/**
 * Created by lijunhao on 2017/8/29.
 */
@Slf4j
public class Start {


    public static void main(String[] args) {
        //所有的入口都是这个InClass,用其里面的方法去调用
        InClass inClass = new InClass();
        inClass.methodA();
        log.info("main在类(Start.java:16)行:{}","A方法结束");
        inClass.methodB();
        log.info("main在类(Start.java:18)行:{}","B方法结束");
        inClass.methodC();
        log.info("main在类(Start.java:20)行:{}","C方法结束");
        inClass.methodD();
        log.info("main在类(Start.java:22)行:{}","D方法结束");
    }
}

  • 2.3,结果
13:29:56.344 [main] INFO com.boot.lijunhao.waiguan.MethodClassA - Amethod在类(MethodClassA.java:13)行:A类中的方法a
13:29:56.348 [main] INFO com.boot.lijunhao.waiguan.MethodClassB - Amethod在类(MethodClassB.java:13)行:B类中的方法a
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.MethodClassC - Cmethod在类(MethodClassC.java:21)行:C类中的方法c
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.Start - main在类(Start.java:16)行:A方法结束
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.MethodClassA - Amethod在类(MethodClassA.java:13)行:A类中的方法a
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.MethodClassB - Amethod在类(MethodClassB.java:13)行:B类中的方法a
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.Start - main在类(Start.java:18)行:B方法结束
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.MethodClassA - Dmethod在类(MethodClassA.java:25)行:A类中的方法d
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.MethodClassB - Dmethod在类(MethodClassB.java:25)行:B类中的方法d
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.MethodClassC - Cmethod在类(MethodClassC.java:21)行:C类中的方法c
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.Start - main在类(Start.java:20)行:C方法结束
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.MethodClassA - Dmethod在类(MethodClassA.java:25)行:A类中的方法d
13:29:56.349 [main] INFO com.boot.lijunhao.waiguan.Start - main在类(Start.java:22)行:D方法结束

© 著作权归作者所有

共有 人打赏支持
月夜筱风
粉丝 0
博文 55
码字总数 19574
作品 0
闵行
程序员
私信 提问
设计模式学习笔记十四:适配器模式、桥接模式与外观模式

1.适配器模式与桥接模式的区别和联系 适配器模式和桥接模式都是间接引用对象,因此可以使系统更灵活,在实现上都涉及从自身以外的一个接口向被引用的对象发出请求。 两种模式的区别在于使用场...

长平狐
2013/06/17
89
0
设计模式什么的哪有那么神秘 ----第一集 一些吐槽和重构的韵味

一日面试, ...... Hr:你对设计模式熟悉吗? 应聘者A:我了解常用的设计模式,平时经常使用工厂模式和单例模式.而且我也看过一些讲23种设计模式的书.其他不常用的模式用的不是太熟. Hr:你用过外观...

架构梦想
2013/08/04
0
7
设计模式Java Design Pattern-工厂方法模式FactoryMethod

我的博客 一、 设计模式的分类 大体可以分为三类: 创建型模式(5个) 单例模式、原型模式、工厂方法模式、抽象工厂模式、建造者模式 结构性模式(7个) 适配器模式、装饰器模式、代理模式、...

勇敢写信
2018/03/22
0
0
小菜学设计模式——设计模式总结之结构型

1、设计模式总结 设计模式总共23个,但是常用的不到10个,下面就把这23个设计模式进行整理归类,具体如下: 1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型...

learn_more
2015/07/06
0
0
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(11.9)hive操作基础知识

上一篇博客分享了hive的简介和初体验,本节博主将继续分享一些hive的操作的基础知识。 DDL操作 (1)创建表 #建表语法CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name ...

em_aaron
今天
0
0
OSChina 周四乱弹 —— 我家猫真会后空翻

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听这个# 我艇牛逼,百听不厌,太好听辣 分享 Led Zeppelin 的歌曲《Stairway To Heaven》 《Stairway To Heaven》- Led Z...

小小编辑
今天
1
0
node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 安装electron-rebuild cnpm ins......

Chason-洪
今天
3
0
scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
3
0
通俗易懂解释网络工程中的技术,如STP,HSRP等

导读 在面试时,比如被问到HSRP的主备切换时间时多久,STP几个状态的停留时间,自己知道有这些东西,但在工作中不会经常用到,就老是记不住,觉得可能还是自己基础不够牢固,知识掌握不够全面...

问题终结者
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部