目录
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 条评论。