设计模式之外观(Facade)模式(笔记)

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

外观模式完美的体现了依赖倒转原则和迪米特法则的思想,所以是比较常见的设计模式之一。

外观模式结构图如下:

定义三个子系统类

public class SubSystemOne {

    public void methodOne(){
        System.out.println("子系统方法1");
    }
}

public class SubSystemTwo {

    public void methodTwo(){
        System.out.println("子系统方法2");
    }
}

public class SubSystemThree {

    public void methodThree(){
        System.out.println("子系统方法3");
    }
}

定义一个外观Facade类

public class Facade {

    private SubSystemOne one;
    private SubSystemTwo two;
    private SubSystemThree three;

    public Facade(){
        one =new SubSystemOne();
        two=new SubSystemTwo();
        three=new SubSystemThree();
    }

    public void methodA(){
        one.methodOne();
        three.methodThree();
    }

    public void methodB(){
        one.methodOne();
        two.methodTwo();
    }
}

客户端代码

public static void main(String[] args) {

        Facade facade=new Facade();
        facade.methodA();
        facade.methodB();
}

由于Facade类的作用,客户端可以根本不知道三个子系统的存在

时间: 2024-08-27 11:28:49

设计模式之外观(Facade)模式(笔记)的相关文章

java 实现外观(Facade)模式

/** * 角色 * @author stone * */ public class Actor { public Actor(String name) { System.out.println("创建了角色: " + name); } public void load() { System.out.println("角色加载"); } public void unload() { System.out.println("角色退出,存档"); }

外观(Facade)模式

外观模式:为子系统中的一组接口提供一个一致的界面.此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 在软件开发中,有时候为了完成一项较为复杂的功能,一个客户类需要和多个业务类交互,而这些需要交互的业务类经常会作为一个整体出现,由于涉及到的类比较多,导致使用时代码较为复杂,此时,特别需要一个类似电脑组装公司一样的角色,由它来负责和多个业务类进行交互,而客户类只需与该类交互.外观模式通过引入一个新的外观类(Facade)来实现该功能,外观类充当了软件系统中的"电脑组装公司",它

设计模式之外观模式(Facade)摘录

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以

【JAVA设计模式】外观模式(Facade Pattern)

一  定义 为子系统中的一组接口提供一个一致的界面.Facade模式定义了一个高层的接口,这个接口使得这一子系统更加easy使用. 二  案例 一个子系统中拥有3个模块.每一个模块中都有3个方法.当中一个为client调用方法,其它两个则为各子模块间互相调用方法.此时有例如以下需求,client为完毕功能.须要组合3个模块中的方法才干实现功能. 三  未使用模式情况 /** * @Description A模块 * @author jerry * @date 2016年4月11日下午2:16:0

设计模式:外观(Facade)模式

设计模式:外观(Facade)模式 一.前言   外观模式是一种非常简单的模式,简单到我们经常都会使用,比如对于类A和B,如果两者需要交互,经过一定的处理过程才能实现某一个具体的功能,那么我们可以将这个处理的过程定义为一个新的类,然后在这个类里面将类A和B的处理步骤整合在一起,对于外界我们只暴露新的类中的这个接口,这样代码的复用性就非常的好了,可以将这些代码作为组件去让其他程序去使用,这在我们的开发之中是非常常见的.甚至我们可以将抽象工厂模式中创建产品的接口当做外观模式的一种应用,这也是一种整合

C#设计模式(11)——外观模式(Facade Pattern)

一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 "门面"模式.下面就具体介绍下外观模式. 二.外观模式的详细介绍 2.1 定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内

设计模式(10) 外观模式(FACADE)

问题聚焦: 设计一个系统时,比较常见的做法是将它划分为若干个小的系统,互相协作,组成一个大的系统. 那么,在设计这些小系统时,需要注意一些什么呢? 外观模式为什么可以让子系统更加容易的使用呢?(最小化子系统之间的通信和相互依赖关系,即降低耦合度) 意图: 为子系统中的一组接口提供一个一致的界面.Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 动机: 将一个系统划分为若干个子系统有利于降低系统的复杂性. 一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小. 达到该

二十四种设计模式:外观模式(Facade Pattern)

外观模式(Facade Pattern) 介绍为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 示例有一个Message实体类,某对象对它的操作有Get()方法,另外还有一个对象有一个Validate()方法来判断用户是否有权限.现在提供一个高层接口来封装这两个方法. MessageModel using System; using System.Collections.Generic; using System.Text; nam

设计模式之(Facade)外观模式

1. 需求 要设计一个家庭媒体中心程序,可以连接DVD,电视(TV)和功放(Sounder),连接好之后,可以一键看电影,一键听音乐.(不用媒体中心的话看电影需要依次打开DVD,TV和Sounder). 2. 分析 我们需要将实现细节封装起来,只暴露出来最简单的接口给客户程序,比如说WatchMovie和ListenMusic. 3. 类图 4. 总结 Facade模式用于将多个对象复杂的交互细节封装成简单的接口,跟Adapter模式的区别在于,Adapter模式突出转接的概念,Facade突出