外观模式的定义
外观模式(Facade),也被称为“门面模式”,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。
模型:
-
Facade:外观角色,了解子系统所有的方法和任务,此角色有自己的方法,client通过此角色方法来调用子系统的功能
-
Subsystem:子系统角色,可以是一个也可以是多个,子系统是分化的不同的处理模块,不是单独的类。
代码演示:
1.子系统:
public class SubsystemA {
public void methodA(){
Log.d("qzs","子系统A");
}
}
public class SubsystemB {
public void methodB(){
Log.d("qzs","子系统B");
}
}
强调一下:这两个类不是独立的,可以看成是一个集合。如果不明白的话,往下面去看实例说明,应该好懂一些。
2.外观类:
public class Facade {
private SubsystemA subsystemA=new SubsystemA();
private SubsystemB subsystemB=new SubsystemB();
//提供给客户端调用的方法
public void methodFacade(){
subsystemA.methodA();
subsystemB.methodB();
}
}
对外提供的方法根据客户端的需求来决定。下面通过一个实例来了解一下。
实例说明
例如我们在今日头条或者微信公众号上发布文章,经常分为两步:
-
编写文章内容并提交文章
-
审核(审核通过才能发布成功)
1.子系统
public class Content {
//编写的文章内容
public void articleContent(String str){
Log.d("qzs",str);
}
//发布文章
public void release(){
Log.d("qzs","点击提交-发布");
}
}
public class Examine {
//文章审核
public void articleExamine(Content content){
Log.d("qzs","此文章审核通过了");
}
}
2.外观类
public class Facade {
private Examine examine=new Examine();
private Content content=new Content();
// 对外提供的处理方法
public void Call(String str){
content.articleContent(str);
content.release();
examine.articleExamine(content);
}
}
3.调用:
String str="编写的文章的内容";
Facade facade=new Facade();
facade.Call(str);
运行:
强调:
子系统每个类不是独立的,两个类分为不同的模块并形成一个集合;另外子系统每个类中的方法数可以是一个或者多个。
实外观模式的优缺点及其他
1.优点
-
减少系统的相互依赖,客户端只能调用外观类的方法
-
提高安全性
-
子系统是隐藏的
2.缺点
不符合开闭原则!!,如果对开闭原则不熟悉的朋友可以看下面的文章:
3.适用场景
在以下情况下可以考虑使用外观模式:
-
设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
-
开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
-
维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
本文部分定义来源于网络
相关推荐
本书浅显易懂的介绍了JAVA线程相关的设计模式,通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA...
### 23种设计模式(通俗易懂篇) #### 创建型模式 1. **Factory(工厂模式)** - **应用场景**:当你需要为用户提供多种选择时,例如选择不同的餐厅来满足不同用户对食物的偏好。 - **原理**:在工厂模式中,...
最后,"23种设计模式详解.ppt"可能是一个包含幻灯片形式的教程,它可能以简洁明了的方式展示了23种设计模式,每种模式的关键点、示例代码和应用场景可能都有所提及,对于快速回顾或教学来说非常方便。 通过阅读这些...
### 设计模式详解 设计模式是在软件开发过程中针对常见的问题所总结出来的最佳实践,它能够帮助开发者更加高效地解决问题,并提高代码的复用性、扩展性和维护性。本篇文章将重点介绍四种常用的设计模式:策略模式、...
3. **设计模式详解**: - 深入分析各种设计模式,如工厂模式、单例模式、装饰者模式等,并探讨它们在Node.js中的应用场景。 - 通过实例展示如何在实际项目中应用这些模式来解决问题。 4. **构建模块化和可扩展的...
《Java与模式-清晰书签版》是一份包含多种Java设计模式详解的资源包,旨在帮助开发者深入理解和应用设计模式。这份资源集成了多种格式的文档,包括详细的文本描述、图表解析以及实际代码示例,使得学习过程更加直观...
"状态机设计模式详解" 在程序设计中,状态机是一种非常重要的概念。状态机是指程序在其生命周期内经过的一系列状态的抽象表示。今天,我们来讨论状态机的设计模式,特别是使用C语言实现状态机的策略。 传统的解决...
### Java设计模式——单例模式详解 #### 一、单例模式概述 单例模式是设计模式中的一个重要组成部分,属于创建型模式之一。其主要作用是确保某个类仅有一个实例存在,并提供一个全局访问该实例的方法。这在很多场景...
它以“傻瓜会计”的设计理念,用通俗易懂的方式替代复杂的会计术语,使得非专业会计人员也能快速上手。 该软件覆盖了多种行业,如百货、服装、汽配等,适应性强。其特色之一是提供了丰富的版本选择,包括单机版、...
适配器模式与外观模式是两种常见的设计模式,它们都能够对已有的系统接口进行改进,以提高系统的可用性、灵活性以及可维护性。 首先,让我们来深入了解Facade模式。Facade模式(外观模式)的意图是提供一个统一的...
多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍JAVA线程相关的设计模式概念,并且通过实际的JAVA程序范例和UML图示来一一解说,书中有代码的重要部分加上标注使读者更加容易...
多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍JAVA线程相关的设计模式概念,并且通过实际的JAVA程序范例和UML图示来一一解说,书中有代码的重要部分加上标注使读者更加容易...
在本书中,"HEAD_FIRST设计模式(中文版)"采用了易懂且生动的方式,将复杂的概念以图文并茂的形式呈现,使得读者能够更轻松地理解和掌握设计模式。以下是对几个关键设计模式的详解: 1. **工厂模式**:它是创建型...
书中不仅通过浅显易懂的文字和实例介绍了这些模式,还提供了丰富的UML图示和代码示例,以帮助读者更深入地理解每个设计模式的运用和实现。此外,本书还包括了Java线程基础内容的介绍、附录内容以及对每个设计模式的...
本文以通俗易懂的语言,详细介绍了23种设计模式。通过比喻和简单的例子,解释了每种设计模式的工作原理和用途,旨在帮助初学者理解并应用这些模式,以提高代码的质量和可维护性。 **适用人群**: 这篇文章适合编程...
本书浅显易懂的介绍了JAVA线程相关的设计模式,通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA...
在电子工程领域,差模电压和共模电压是两种重要的概念,主要应用于...在实际工作中,通过阅读"详解差模电压和共模电压-简单易懂.pdf"这份参考资料,可以深入学习这两个概念,掌握它们在电路设计中的应用和应对策略。