设计模式之~外观模式

定义:

        为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

结构图:

区分中介模式:

  • 门面模式对外提供一个接口

  • 中介模式对内提供一个接口

优点:

  • 松耦合:用户与子系统解耦,屏蔽子系统;可以提高子系统的独立性;

  • 使用简单:简化用户与子系统的依赖关系;用户只与门面对接,有统一的入口,不需要知道所有子系统及内部构造。使得系统更加容易调用;

  • 更好的划分访问层次:通过合理使用Facade,可以帮助我们更好地划分访问的层次。有些方法是对系统外的,有些方法是系统内部使用的。把需要暴露给外部的功能集中到门面中,这样既方便客户端使用,也很好地隐藏了内部的细节。

缺点:

  • 当增加子系统或者扩展子系统功能时,可能容易带来未知风险

  • 不符合开闭原则

  • 某些情况下可能会违背单一职责原则

适用场景:

  • 首先,在设计初期阶段,应该要有意识的将不同的两个层分离。

    比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。

  • 其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。

  • 第三,在维护一个一流的大系统时,可能这个系统已经非常难以维护和扩展了。但因为它包含了非常重要的功能,新的需求开发必须要依赖它。此时用外观模式Facade也是非常合适的。为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/250916.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【xv6操作系统】安装、运行与调试

一、构建、装入过程 1.编写“启动代码主体代码”(在下载的xv6的原始代码上进行修改) 2.源代码进行编译、链接生成系统镜像(elf格式的目标文件) 3.将系统镜像保存起来(如保存到磁盘、flash或者网络服务器上&#xff…

spring入门(面试题)

Spring框架的核心:IoC容器和AOP模块。通过IoC容器管理POJO对象以及他们之间的耦合关系;通过AOP以动态非侵入的方式增强服务。 IoC让相互协作的组件保持松散的耦合,而AOP编程允许你把遍布于应用各层的功能分离出来形成可重用的功能组件。 IO…

spring 入门

Spring 是什么(1) Spring 是一个开源框架.  Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.  Spring 是一个 IOC(DI) 和 AOP 容器框架. Spring 是什么(2) 具体描述 Spring:  轻量级:Spring 是非侵入性…

spring入门--spring入门案例

spring是一个框架,这个框架可以干很多很多的事情。感觉特别吊。但是,对于初学者来说,很难理解spring到底是干什么的。我刚开始的时候也不懂,后来就跟着敲,在后来虽然懂了,但是依然说不明白它到底是干啥的。…

Spring入门示例

开发环境 Spring 4.3.0Myeclipse2015JDK1.8 准备阶段: 1、新建一Spring01项目,然后新建一个lib文件。将下面的添加到lib文件中 2、将lib文件所有的包导入项目 开发步骤: 1、新建一个Hello.java的类 1 package com.proc.bean;2 3 public class…

Spring入门详解

准备开始看看Spring源码, 所以把Spring复习一遍,做下笔记.. 一. Spring的4种关键策略: 1. 基于POJO的轻量级和最小入侵编程(基本不出现在业务逻辑中, 不用强制实现接口之类的); 2. 通过依赖注入和面向接口来实现松耦…

1.Spring入门

一、Spring入门 1.Spring 入门 Spring 整体框架: 什么是IOC? IOC:Inversion of Control(控制反转),即将对象的创建权反转给(交给)spring。 spring包含的文件: docs&am…

spring入门例子

Hello World入门 2.5.1、准备开发环境和运行环境: ☆开发工具:eclipse ☆运行环境:tomcat6.0.20 ☆工程:动态web工程(springmvc-chapter2) ☆spring框架下载: spring-framework-3.1.1.RELEASE-w…

Spring入门

Spring框架的设计理念 Spring的骨骼架构 Spring总共有十几个组件,但真正核心的组件只有几个,下面是Spring框架的总体架构图 图1 .Spring 框架的总体架构图 从图中可以看出,Spring框架中的核心组件只有三个:Context,Co…

【Spring入门】

Spring01loc&DI 概念:Spring是一种分层的Javaee、Javase应用full-stack(全栈)轻量级开源框架,以ioc(反转控制)和aop(面向切面编程为内核),提供了SpringMVC和SpringJD…

GIT | 日常命令查阅表

最近公司代码管控比较乱,有天就利用分支进行了代码梳理,当时就遇到一些困惑,抽空就把git 再学了一下。 以前我是用git命令的,但是敲命令对我来说还是有点麻烦(主要是git 功力不够),看到有同事用…

Spring入门篇

第1章 概述 本章对课程的情况进行介绍,并介绍框架和Spring概况。 1-1 Spring入门课程简介 (05:56) 1-2 Spring概况 (09:39) 1-3 Spring框架 (04:24) 第2章 Spring IOC容器 介绍Spring IOC容器的基本概念和应用 2-1 IOC及Bean容器 (20:18) 容器中的对象就是Bean…

spring入门总结

spring入门总结 一、spring介绍1、spring是什么2、理念:3、Spring优点:4、缺点5、主要内容: 二、IOC&DI1、使用IOC创建对象的三种方法a、无参构造方法创建b、通过有参构造方法来创建c、通过工厂方法来创建对象 2、配置文件详解3、依赖注入…

Spring 入门

引自:http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 2005 年 8 月 18 日 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级的、强…

Spring入门须知

Hi ~o(* ̄▽ ̄*)ブ大家好呀! 我是【小阿飞_】,我又来给大家分享知识啦😜 今天分享的是spring入门需要理解的一些概念和一些基础的使用操作,有哪里讲解的不好还请大佬们评论区多多指点😜 本期精彩&…

Spring入门基础

目录 1.Spring的相关概念 2.Spring的核心与设计思想 3.Spring创建与使用 4.更简单地去使用Spring 5.Bean的作用域与生命周期 1.Spring相关概念 1.1 什么是Spring 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个…

Spring入门程序

目录 一、Spring概述二、Spring的体系结构三、Spring的核心容器四、实现步骤 一、Spring概述 spring是当前主流的JavaWeb框架,它是为了解决应用开发复杂性问题而产生的。对于一个Java应用程序员来说,掌握spring框架的使用,是我们基本的一项技…

Spring入门这一篇就够了

前言 前面已经学习了Struts2和Hibernate框架了。接下来学习的是Spring框架…本博文主要是引入Spring框架… Spring介绍 Spring诞生: 侵入式概念 Spring是一种非侵入式的框架… 侵入式 非侵入式 松耦合 前面我们在写程序的时候,都是面向接口编程&#xff…

Spring入门,看这篇就够了

Spring入门,看这篇就够了 文章目录 Spring入门,看这篇就够了一、 初识Spring二、Spring Framework系统架构三、核心概念1.IoC(inversion of control)控制反转2.Bean3.DI(dependency injection)依赖注入 四、…

Spring 入门教程

Spring 入门教程 1、参考资料 尚硅谷-Spring5框架最新版教程(idea版)雷丰阳spring、springmvc、mybatis、spring一站式学习 项目地址:Oneby / spring-learn 2、Spring 概述 2.1、Spring 框架概述 Spring 是轻量级的开源的 JavaEE 框架 Sp…