文档章节

设计模式-外观模式

月夜筱风
 月夜筱风
发布于 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
闵行
程序员
设计模式什么的哪有那么神秘 ----第一集 一些吐槽和重构的韵味

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

架构梦想
2013/08/04
0
7
小菜学设计模式——设计模式总结之结构型

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

learn_more
2015/07/06
0
0
java设计模式-- 单例模式

在很久之前,也就是在大二暑假的时候,那时候看马士兵的视频教程中有提到很多的设计模式。 java的设计模式大致可以分为3大类,23种设计模式。 其中,创建型模式有5种:单例模式、建造者模式、...

爱学习的逃课君
2014/11/27
0
0
(目录)设计模式(可复用面向对象软件的基础)

本系列“设计模式”博客使用Golang语言实现算法。所谓算法是指解决一个问题的步骤,个人觉得不在于语言。小弟只是最近学习Golang,所以顺带熟练一下语法知识,别无它意。 本系列博客主要介绍...

chapin
2015/01/13
0
0
你需要了解的23种JavaScript设计模式

为什么要学习设计模式? 在许多访谈中,你可能会遇到很多面向对象编程中的接口,抽象类,代理和以及其他与设计模式相关的问题。 一旦了解了设计模式,它会让你轻松应对任何访谈,并可以在你的...

java高级架构牛人
06/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

7 个致命的 Linux 命令

导读 如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试从各个渠道获得的命令。以下是 7 个致命的 Linux 命令,轻则使你的数据造成丢失,重则使你的系统造成瘫痪,所以,你应当竭力避...

问题终结者
今天
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
今天
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
今天
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
今天
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部