门面模式/外观模式

原文链接:http://www.tutorialspoint.com/design_pattern/facade_pattern.htm

Facade Pattern(门面模式/外观模式) 隐藏了系统的复杂性,为客户端访问系统提供了一个接口。Facade Pattern 属于结构型模式的一种,通过添加一个接口来隐藏现有系统的复杂性。

Facade Pattern 涉及到一个类,这个类代理调用了现有系统的类的一些方法,从而为客户端提供了简化的方法来访问系统。

实现

我们将会创建一个 Shape 接口和 Shape 接口的具体实现类。下一步中会定义一个 facade 类 ShapeMaker。

ShapeMaker 使用具体的类来代理用户想要访问的类。FacadePatternDemo 是一个 demo 类,会用 ShapeMaker 类来展示结果。

第一步

创建一个接口。

Shape.java

public interface Shape {
    void draw();
}

第二步

创建 Shape 接口的具体实现类。

Rectangle.java

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Rectangle::draw()");
    }
}

Square.java

public class Square implements Shape {
    @Override
    public void draw() {
        System.our.println("Square::draw()");
    }
}

Circle.java

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Circle::draw()");
    }
}

第三步

创建一个 facade 类。

ShapeMaker.java

public class ShapeMaker {
    private Shape circle;
    private shape rectangle;
    private shape square;

    public ShapeMaker() {
        circle = new Circle();
        rectangle = new Rectangle();
        square = new Square();
    }

    public void drawCircle() {
        circle.draw();
    }

    public void drawRectangle() {
        rectangle.draw();
    }

    public void drawSquare() {
        square.draw();
    }
}

第四步

使用 facade 绘制各种类型的形状。

FacadePatternDemo.java

public class FacadePatternDemo {
    public void main(String[] args) {
        ShapeMaker shapeMaker = new ShapeMaker();

        shapeMaker.drawCircle();
        shapeMaker.drawRectangle();
        shapeMaker.drawSquare();
    }
}

第五步

验证结果。

Circle::draw()
Rectangle::draw()
Square::draw()
时间: 2024-10-10 23:08:21

门面模式/外观模式的相关文章

第12章 结构型模式—外观模式

1. 外观(门面)模式(Facade Pattern)的定义 (1)为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. ①这里说的界面是指从一个组件外部来看这个组件,能够看到什么,也就是外观.如从一个类外部看这个类,那么这个类的public方法或接口就是他的外观. ②这里所说的“接口”是指外部和内部交互的一个通道(方法),可以是类的方法,也可以是interface的方法. (2)外观模式的结构和说明 ①Façade:定义子系统的多个模

设计模式--结构型模式--外观模式

医院的例子: 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统.如果把医院作为一个子 系统,按照部门职能,这个系统可以划分为挂号.门诊.划价.化验.收费.取药等.看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的 各个类打交道一样,不是一件容易的事情. 首先病人必须先挂号,然后门诊.如果医生要求化验,病人必须首先划价,然后缴费,才可以到化验部门做化验.化验后再回到门诊室. 上图描述的是病人在医院里的体验,图中的

11 结构型模式-----外观模式

模式动机(Facade Pattern):在设计一个复杂系统时,一般会将其分解为若干个具有特定功能的子系统以便于分析设计,这样的话就会导致数量众多的子系统接口出现,使得与调用者的交互变得复杂了.解决办法是在所有子系统的上一层提供一个外观类(Facade),其负责对所有子系统的统一调用,客户只需和外观类交互即可. 模式结构图: 模式代码: bt_外观模式.h: 1 #ifndef FP_H 2 #define FP_H 3 #include <iostream> 4 5 /* 6 定义子系统Su

java设计模式--结构型模式--外观模式

1 外观模式 2 概述 3 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 4 5 6 适用性 7 1.当你要为一个复杂子系统提供一个简单接口时.子系统往往因为不断演化而变得越来越 8 复杂.大多数模式使用时都会产生更多更小的类.这使得子系统更具可重用性,也更容 9 易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难. 10 Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需

建造模式 + 外观模式示例:实现扣除用户金币及写入用户明细

实现功能: 扣除用户金币及写入金币明细,这是同一个行为,使用外观模式 金币明细需要多个参数来保证对象的完整,参数过多,所以使用建造模式 一.用户明细类 class MoneyDetail { const MONEY_PAY = 1; // 充值获得 const MONEY_EXCHANGE = 2; // 兑换 private $type; private $quantity; private $desc; private $time; public function __construct(M

【编程思想】【设计模式】【结构模式Structural】门面模式/外观模式Facade

Python版 https://github.com/faif/python-patterns/blob/master/structural/facade.py #!/usr/bin/env python # -*- coding: utf-8 -*- """ *What is this pattern about? The Facade pattern is a way to provide a simpler unified interface to a more com

外观模式 门面模式 Facade 创建型 设计模式(十三)

外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统基本上都是会往功能更全面的方向发展,那么也就意味着我们的系统将会变得更加复杂. 系统会被划分为多个单独的子系统,每个子系统完成一部分功能,通过分工协作完成全部功能. 一个子系统也可能进一步拆分为更小的几个子系统. 程序中的文件将会越来越多,相互关联也会变得更加复杂 当使用一个功能的时候,作为客户端 你需

iOS开发-适配器和外观模式

适配器模式,属于结构型模式,其主要作用是将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.适配器模式有对象适配器和类适配器两种,类适配器模式需要语言实现多继承,OC不支持多继承,所以一般我们都实现对象适配器.外观模式提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用.适配器是为了转换接口,外观模式是为了简化接口. 适配器模式 对象适配器模式UML类图: 关于适配模式最常见的就是手机充电的例子,

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

外观模式 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.外观模式又称为门面模式,它是一种对象结构型模式. C++代码: #include<iostream> using namespace std; class Shape { public: virtual void draw()=0; }; class Rectangle : public