GoF23种设计模式之结构型模式之外观模式

来源:互联网 发布:逆战网络初始化 编辑:程序博客网 时间:2024/06/06 18:49
一、概述
        为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
二、适用性
1.当你要为一个复杂子系统提供一个简单接口的时候。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。外观模式可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过外观层。
2.客户程序与抽象类的实现部分之间存在着很大的依赖性的时候。引入外观模式将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
3.当你需要构建一个层次结构的子系统的时候,使用外观模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过外观层进行通讯,从而简化了它们之间的依赖关系。
三、参与者
1.Facade:知道哪些子系统类负责处理请求。将客户的请求代理给适当的子系统对象。
2.Subsystemclasses:实现子系统的功能。处理由Facade对象指派的任务。没有Facade对象的任何相关信息;即没有指向Facade对象的指针。
四、类图

五、示例
Facade
package cn.lynn.facade;public class ServiceManager {    private IAuthService authService;    private ILogService logService;    private IFileService fileService;    public ServiceManager() {        authService = new AuthServiceImpl();        logService = new LogServiceImpl();        fileService = new FileServiceImpl();    }    public void service() {        authService.auth();        logService.log();        fileService.file();    }}
Subsystemclasses
package cn.lynn.facade;public class AuthServiceImpl implements IAuthService {    @Override    public void auth() {        System.out.println("实现认证服务!");    }}
package cn.lynn.facade;public class LogServiceImpl implements ILogService {    @Override    public void log() {        System.out.println("实现日志服务!");    }}
package cn.lynn.facade;public class FileServiceImpl implements IFileService {    @Override    public void file() {        System.out.println("实现文件服务!");    }}
Client
package cn.lynn.facade;public class Client {    public static void main(String[] args) {        ServiceManager serviceManager = new ServiceManager();        serviceManager.service();    }}
Result
实现认证服务!实现日志服务!实现文件服务!
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子抢玩具打人怎么办 生气就像打人怎么办 小孩总喜欢打人怎么办 小孩性格好翘怎么办 一岁小宝宝打人怎么办 小孩子老喜欢打人怎么办 孩子被大人欺负怎么办 小孩识字量少怎么办 父母打架孩子该怎么办 小孩嘴唇里面烂怎么办 幼儿园小朋友很调皮怎么办 幼儿园小朋友上课调皮怎么办 孩子误冲游戏怎么办 遇到别的熊孩子怎么办 幼儿园遇到熊孩子怎么办 高铁上遇到熊孩子怎么办 幼儿爱打人家长怎么办 妈妈爱打孩子怎么办 35儿童爱打人怎么办? 一岁半宝宝太调皮怎么办 儿子高一不听话怎么办 小孩说了不听话怎么办 我的妈妈文盲怎么办 电脑键盘反拼音怎么办 小孩学习态度差怎么办 孩子不好好上学怎么办 小孩读书态度不好怎么办 幼儿园孩子不认识数字怎么办 一年级孩子拼音很差怎么办 孩子的拼音不好怎么办 小孩不会拼拼音怎么办 小孩拼音学不会怎么办 儿童l发音不准怎么办 小孩发音不标准怎么办 拼音l发音不准怎么办 孩子拼音声调分不清怎么办 小孩gk读成dt怎么办 拼音音调学不会怎么办 会拼音不会打字怎么办 大人拼音学不会怎么办 志愿服务经历少怎么办