外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
以上的定义摘自《大话设计模式》。按我自己的理解,外观模式:将一个或多个类中的多个方法打包到一个方法中供外界调用。打个比方,现有A类的a方法、B类的b方法、C类的c方法,我们的业务代码想调用三个方法,
public class business{
// 业务代码
public void method() {
A.a(); //调用A方法
B.b(); //调用B方法
C.c(); //调用C方法
}
}
使用外观模式后,我们不让业务代码直接调用这三个方法,而是通过一个包装后的方法来调用
public class Facade {
public void facadeMethod() {
A.a(); //调用A方法
B.b(); //调用B方法
C.c(); //调用C方法
}
}
public class business{
Facade facade = new Facade();
// 业务代码
public void method() {
facade.facadeMethod(); //通过包装后的方法来调用
}
}
很多朋友即使没特意学习过外观模式,但在实际工作中肯定有运用到它,比如在持久层和业务层之间,我们通常就会建立外观,将一系列持久层操作使用外观包装起来供业务层调用。
我们再做个例子,我们的公司有员工要入职,入职需要往数据库里记录员工基本信息、给员工分配的电脑信息、该员工的福利信息,使用外观模式代码如下:
public class EmployeeDao {
//保存员工信息
public void saveEmployee(String name) {
System.out.println("新增了一名员工:" + name);
}
//删除员工信息
public void deleteEmployee(String name) {
System.out.println("删除了一名员工:" + name);
}
}
public class EmpComputerDao {
// 保存给员工分配电脑信息
public void saveComputer(String eName) {
System.out.println("给员工" + eName + "分配了电脑");
}
// 删除员工分配电脑信息
public void deleteComputer(String eName) {
System.out.println("将员工" + eName + "的电脑收回");
}
}
public class WelfareDao {
// 保存员工福利信息
public void saveWelfare(String eName) {
System.out.println("给员工 " + eName + "新增福利");
}
// 删除员工福利信息
public void deleteWelfare(String eName) {
System.out.println("将员工" + eName + "的福利取消");
}
}
public class Company {
EmployeeDao emp = new EmployeeDao();
EmpComputerDao comp = new EmpComputerDao();
WelfareDao welf = new WelfareDao();
// 员工入职
public void employeeEntry(String eName) {
emp.saveEmployee(eName); // 保存员工信息
comp.saveComputer(eName); // 保存给员工分配电脑信息
welf.saveWelfare(eName); // 保存员工福利信息
}
// 员工辞职
public void resign(String eName) {
emp.deleteEmployee(eName); // 删除员工信息
comp.deleteComputer(eName); // 删除员工分配电脑信息
welf.deleteWelfare(eName); // 删除员工福利信息
}
}
public class MainClass {
/**
* 业务代码
* @param args
*/
public static void main(String[] args) {
Company company = new Company();
// 张三入职
company.employeeEntry("张三");
System.out.println("三年以后。。。。。。");
// 三年后,张三辞职了
company.resign("张三");
}
}
外观模式的好处:
封装了细节,更加易用和可维护。
比如张三入职,我们在业务代码上只需要调用入职方法,而不需要去管入职具体做了哪些操作,以后维护这段代码时候我们非常明确这里是张三入职了!而不用去猜“保存员工信息”、“保存员工分配电脑信息”等等这些操作连在一起到底是要干嘛呢。。。
分享到:
相关推荐
以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...
### Java设计模式学习笔记——外观模式(Facade Pattern) #### 概述 设计模式是软件工程领域中一种解决常见问题的可复用解决方案。在Java开发过程中,掌握设计模式能够帮助开发者更好地组织代码结构,提高代码的...
### Head First 设计模式学习笔记知识点总结 #### 1. 欢迎来到设计模式世界:设计模式入门 - **业务场景**: - **需求背景**:开发一款模拟鸭子的游戏,游戏内包含多种不同种类的鸭子,每种鸭子具有不同的外观...
这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...
2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,...
学习笔记中提及的参考资料链接提供了丰富的学习材料,能够帮助学习者从理论到实践逐步深入掌握设计模式的知识。 随着面向对象编程语言和编程技术的发展,设计模式的知识也在不断地进化和丰富。为了构建高质量的软件...
在《23个设计模式图解--学习笔记》中,我们探讨了这些模式,以便于理解和应用到实际开发中。以下是这23个设计模式的详细说明: 1. **工厂方法**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。
设计模式作为软件工程中的一项核心技术,它是一套被广泛认可的用于解决特定问题的最佳实践。...通过阅读这些设计模式学习笔记和研究源码案例,开发者可以更快速地掌握设计模式的实际应用,从而提升开发水平和软件质量。
笔记文件的名称“DesignPatternStudy-master”暗示了这是一份专注于设计模式学习的系列笔记,而"master"可能表明这是该系列的核心或主文件,其他相关的文件可能是补充材料或者分章节的学习笔记。
### 23种设计模式学习笔记 #### 一、软件设计模式的概念与意义 **概念:** 软件设计模式(Software Design Pattern),又称设计模式,是一套被广泛采用、经过整理和分类的代码设计经验总结。它针对软件设计过程中...
"GoF 23种设计模式学习笔记" 是一个深入探讨这23个经典设计模式的资源,这些模式最初由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年的著作《设计模式:可复用面向对象软件的基础》中...
设计模式的学习不仅帮助我们编写更可维护、可扩展的代码,还能提高团队间的沟通效率,因为它们提供了通用的语言和解决方案。在实际开发中,灵活运用这些设计模式可以有效解决设计问题,提升代码质量。因此,深入理解...
【Java学习笔记】 在Java的学习旅程中,深入理解其核心概念是至关重要的。Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和稳定性而受到青睐。本笔记集合将带你逐步走进Java的世界,从基础语法到...
### 设计模式学习笔记 #### 引言 设计模式(Design Patterns)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...
这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...
在这个“#资源大人分享计划# 设计模式学习笔记.rar”压缩包中,我们可以期待找到一系列关于设计模式的详细学习资料,包括定义、类图、代码示例以及各种使用场景,这些都将帮助我们深入理解并掌握设计模式。...
这个学习笔记主要围绕“jqGrid学习笔记1”展开,内容来源于jqGrid的英文PDF文档,结合了源码解析和实用工具的介绍。 首先,jqGrid支持多种数据源,包括JSON、XML、HTML、CSV等,这使得它能灵活地与各种后端服务进行...
为了更有效地学习设计模式,除了理论学习之外,还应通过实践去应用这些模式。这通常意味着在项目中尝试使用不同的设计模式去解决实际遇到的问题,并不断反思和评估这些模式的适用性。实践中,可以通过重构现有代码,...
尚硅谷Java设计模式学习笔记主要涵盖了软件工程中非常重要的设计模式知识,以及结合框架源码的深入剖析,旨在帮助学习者更好地理解和运用设计模式解决实际开发中的问题。Java设计模式是Java开发人员必备的技能之一,...