赞
踩
门面模式,也称为外观模式,是一种结构型设计模式。它的主要目的是提供统一的接口来访问子系统中的多个接口,从而简化客户端与复杂子系统之间的交互。
在门面模式中,一个门面类充当中介,为客户端提供一个简化了的访问方式,而不需要了解子系统的具体细节。这样不仅降低了客户端与子系统之间的耦合度,还使得子系统的使用更加方便
本章代码:小麻雀icknn/设计模式练习 - Gitee.com
在门面模式中,通常存在两个角色:
外观角色(faced):
- package com.study.main.Faced;
-
- public class Faced {
- public SubA subA =new SubA();
- public SubB subB = new SubB();
- void doAB(){
- subA.doSomething();
- subB.doSomething();
- }
- }
子系统A
- package com.study.main.Faced;
-
- public class Faced {
- public SubA subA =new SubA();
- public SubB subB = new SubB();
- void doAB(){
- subA.doSomething();
- subB.doSomething();
- }
- }
子系统B
- package com.study.main.Faced;
-
- public class SubB {
- void doSomething(){
- System.out.println("B do Something");
- }
- }
测试&运行
- package com.study.main.Faced;
-
- public class Main {
- public static void main(String[] args) {
- new Faced().doAB();
- }
- }
在tomcat 中大量的使用了门面模式
Tomcat 中有很多不同组件,每个组件要相互交互数据,用门面模式隔离数据是个很好的方法。在Tomcat源码中搜索Facade(门面):
其中拿ReguestFacade.class来说,它是HttpSeryletRequest外观类,里面封装了各种操作request的常见方法,比如getParameter方法等。
Reguest.class中封装了 HttpRequest 接口能够提供的数据,是子系统的门面。实际项目中对request进行操作的时候,其实使用的都是ReguestFacade这个外观类对象:
一般来讲,门面模式常用的使用场景有以下几种。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。