`
link1987330
  • 浏览: 22653 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式学习笔记之四---外观模式

阅读更多
    外观模式(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("张三"); 
	}
}


外观模式的好处:
封装了细节,更加易用和可维护。
比如张三入职,我们在业务代码上只需要调用入职方法,而不需要去管入职具体做了哪些操作,以后维护这段代码时候我们非常明确这里是张三入职了!而不用去猜“保存员工信息”、“保存员工分配电脑信息”等等这些操作连在一起到底是要干嘛呢。。。
0
2
分享到:
评论

相关推荐

    尚硅谷设计模式源码笔记课件.zip

    2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,...

    java设计模式之外观模式学习笔记

    主要为大家详细介绍了java设计模式之外观模式学习笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java-design-patterns:Java 设计模式学习笔记

    Java Design PatternsJava 设计模式学习笔记,简单易懂,每个模式都有相应的代码示列,帮助学习理解。在线阅读地址:设计原则创建型模式作用:将创建与使用代码解耦结构型模式作用:将不同的功能代码解耦桥接模式...

    设计模式笔记(包含所有设计模式)个人总结提炼笔记

    设计模式是一种解决软件设计问题的经验总结,是在软件开发过程中经过反复验证的最佳实践。设计模式提供了一套通用的解决方案,可以帮助开发人员更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。 设计...

    软件设计模式经典案例讲解

    针对几种经典软件设计模式:模板方法模式 外观模式 代理模式 装饰器模式 桥模式 工厂方法模式 组合模式等给出了简单易懂的讲解,透彻明了。很好的学习资料哦,是我平时学习时做的笔记外加自己的理解,很不错的……

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    java-patterns:Java 23种基本的设计模式整料整理学习,责任链模式过滤器,工厂模式BeanFactory,观察者模式ContextListen等。结合Spring源码理解学习

    describe:设计模式学习笔记 逻辑结构图 代码结构图 设计模式简述 创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式,共七种:适配器模式,装饰器模式,代理模式,...

    左程云leetcode-hjLearningNotes:hj学习笔记

    第一部分:设计模式 & UML 简单工厂 工厂方法模式 抽象工厂模式 策略模式 责任链模式 命令模式 模板方法模式 适配器模式 代理模式 外观模式 组合模式 装饰模式 享元模式 桥接模式 Builder模式 状态模式 解释器模式 ...

    java-design-patterns:java 学习模式

    设计模式之UML 类图以及类间关系(泛化 、实现、依赖、关联、聚合、组合) 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试...

    CEGUI深入解析

    CEGUI的详细笔记和文档,学习游戏编程的朋友一定要看看 第1章 CEGUI的简介 - 5 - 1.1CEGUI历史和本书使用的版本 - 5 - 1.2 CEGUI的编译和例子介绍 - 5 - 1.2.1CEGUI源代码的简介 - 5 - 1.2.2CEGUI源代码编译 - 7 - ...

    arthur-dy-lee-note:Arthur's一些学习笔记

    学习笔记 设计模式 性能 spring 创建型模式(原工单抽建) 结构型模式(享代装适组外桥/享元装饰外观,代理桥接适配组合) 行为型模式(中访观模状解策命责迭备) 分布式

    java8源码-jcohy-study-sample:个人学习整理

    适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图: 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、...

    silverlight 3 控件经典入门学习案例

    11.强大的DataGrid组件[3]_数据交互之Linq to SQL——Silverlight学习笔记 12-13.强大的DataGrid组件[4]_实现CURD 14.强大的DataGrid组件[6]_调用存储过程服务端分页 15.强大的DataGrid组件[7]_自定义DataGrid ...

Global site tag (gtag.js) - Google Analytics