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

外观模式(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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值