文档章节

设计模式-外观模式

月夜筱风
 月夜筱风
发布于 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
JavaScript设计模式入坑

JavaScript设计模式入坑 介绍 设计模式编写易于维护的代码。 设计模式的开创者是一位土木工程师。Σ( ° △ °|||)︴,写代码就是盖房子。 模式 模式一种可以复用的解决方案。解决软件设计中...

小小小8021
昨天
0
0
(目录)设计模式(可复用面向对象软件的基础)

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

chapin
2015/01/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用户体验要素——以用户为设计中心

一、用户体验是什么 产品会与外界发生联系,人们如何去使用产品,人们使用产品无非解决两种问题,一,提高效率;二娱乐。而用户体验兼顾着功能和界面两个方面,为的是“提高人们的工作效率”...

铸剑为犁413
55分钟前
0
0
学习设计模式——代理模式

1. 认识代理模式 1. 定义:为其他对象提供一种代理以控制对这个对象的访问。 2. 组织结构: Proxy:代理对象,要实现与目标代理对象的相同的接口,这样就可以使用代理来代替具体的目标对象,...

江左煤郎
今天
1
0
java JDK动态代理

本篇随笔是对java动态代理中的JDK代理方式的具体实现。 首先需要定义一个接口,为其定义了两个方法:   public interface UserService { public void add(); public void delete(); } 然后需...

编程SHA
今天
2
0
轻松理解Dubbo分布式服务框架

Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的...

别打我会飞
今天
3
0
TypeScript基础入门之JSX(一)

转发 TypeScript基础入门之JSX(一) 介绍 JSX是一种可嵌入的类似XML的语法。 它旨在转换为有效的JavaScript,尽管该转换的语义是特定于实现的。 JSX在React框架中越来越受欢迎,但此后也看到了...

durban
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部