外观模式(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开发过程中,掌握设计模式能够帮助开发者更好地组织代码结构,提高代码的...
这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...
在《23个设计模式图解--学习笔记》中,我们探讨了这些模式,以便于理解和应用到实际开发中。以下是这23个设计模式的详细说明: 1. **工厂方法**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化...
2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。
### 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等,这使得它能灵活地与各种后端服务进行...
以下是一些在尚学堂300Java设计模式部分学习笔记中涉及的设计模式的知识点: 创建型模式: 创建型模式主要解决对象创建的问题,确保系统的灵活性和封装创建细节。学习笔记中提到了5种创建型模式: 1. 单例模式...
本资料“图解Java设计模式笔记总结word版本”聚焦于通过图文并茂的方式,深入浅出地解析各种设计模式。以下是基于这个主题的详细知识点讲解: 1. **设计模式的分类** - **创建型模式**:如单例(Singleton)、工厂...
学习设计模式对于软件开发人员来说至关重要,主要基于以下几点理由: - **经验借鉴**:设计模式是基于众多专家的经验和智慧,提供了经过实践检验的解决方案。 - **提高可维护性和可复用性**:通过遵循已知的最佳...
通过阅读这份笔记,读者不仅可以学习到设计模式的基本概念,还能了解到如何在Java环境中实际运用这些模式,提升编程技能。设计模式的学习和掌握是成为一名优秀程序员的必经之路,它们能帮助我们写出更高效、更灵活、...
外观模式(Facade Pattern)是一种设计模式,主要用于简化子系统或组件的使用,提供一个统一的接口,使得客户端不必关心复杂的内部实现,降低了系统的耦合度。在Java设计模式中,外观模式扮演着重要角色,它使得系统...