欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式-结构型软件设计模式(三)

程序员文章站 2024-01-20 15:40:28
...

外观模式

简介

外观模式用来隐藏一个软件系统的所有内部细节,只提供给客户类一个外观类,或者叫做接口类。客户类直接调用该外观类的方法即可,而不必担心这些方法对其他类的调用的内部细节。

外观模式角色

(1)外观角色:这是外观模式的核心,它被客户角色调用,因此它熟悉子系统的功能。其内部根据客户角色已有的的需求预定了几种功能组合。
(2)子系统角色:实现子系统的功能,对它而言,外观角色就和客户角色一样是未知的,它没有任何外观角色的信息和链接。
(3)客户角色:调用外观角色来完成要得到的功能。

示例

外观类
public class generalized
{
    private student s;
    private bus b;
    ...
    public void read()
    {
        s = new student();
        s.read();
    }
    public void run()
    {
        b = new bus();
        b.run();
    }
}
子系统角色
public class student
{
    public void read(){...}
    ...
}

public class bus
{
    public void drive(){...}
}

使用外观模式目的

为了是一系列复杂的接口提供一个统一的接口,使系统更容易使用,这个统一的接口可以被认为是更高级的接口,提供足够的功能,供客户程序直接调用。

优缺点

优点:
利用外观模式可以去掉子系统与客户程序间的直接绑定,从而提供子系统的独立性,也降低了客户程序与子系统的直接耦合度,此外,利用外观模式可以是系统层次化。
缺点:
外观类不存在已有的功能,以及对于那些不需要定制的用户来说,这种情况下,用户可以直接绕过外观类,直接调用子系统类。