目录
Facade 外观模式
目录
[TOC]
1. 概述
1.1. Head First设计模式定义
提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
1.2. 自我理解
多个具体的功能封装成一个具体的业务,原来我们系统中 service 层就是对 dao的封装,比如说我们新增一条记录,先调用 dao 查询是否记录存在,调用其他检查工具是否有字段不符合系统要求等一系列操作,service仅提供 insert 方法,让调用者使用更加方便。
1.3. 外观模式的组成
客户 (Client):通过调用 Facede 来完成要实现的功能。
外观 (Facade):外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。
复杂的子系统:实现了子系统的功能。它对客户角色和 Facade 是未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。
2. UML

3. Example
3.1. 场景
上课翻开书、拿起笔写字。
下课合上书、放下笔。
3.2. Facade设计模式的代码实现
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | public class FacadePatternDemo {     public static void main(String[] args) {         ClassFacade classFacade = new ClassFacade(new Book(), new Pen());         classFacade.classBegin();         classFacade.classOver();     }     static class ClassFacade {         Book book;         Pen pen;         public ClassFacade(Book book, Pen pen){             this.book = book;             this.pen = pen;         }         void classBegin(){             System.out.println("开始上课....");             book.open();             pen.write();         }         void classOver(){             System.out.println("下课....");             book.close();             pen.putDown();         }     }     static class Book {         public void open(){             System.out.println("翻开书");         }         public void close(){             System.out.println("合上书");         }     }     static class Pen {         public void write(){             System.out.println("拿起笔,写字");         }         public void putDown(){             System.out.println("放下笔");         }     } } | 
原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]
本文链接地址: http://www.loserzhao.com/java/designpattern/facade-designpattern.html
文章的脚注信息由WordPress的wp-posturl插件自动生成
0 条评论。