什么是接口——java语言中的接口
Java类中定义的所有public型的方法都可以被简单地视为该类对外提供的接口。
抽象类中public型的抽象方法,可以被看成是整棵继承树的对外接口。
对于Java语言,针对接口编程就是指针对interface类型的编程。
什么是接口——c++语言的接口
由于没有提供interface类型,对于C++语言来说,针对接口的编程更多指的是针对抽象类的编程。
外观模式
一个子系统有多个不同的类,或有多棵继承树时。
外观模式——设计意图
外观模式可以为一个子系统中的多个类提供统一的接口。外观模式定义了一个高层次的接口,并使一个子系统更易于使用。
把一个组件单元构建成一个子系统有助于减少软件的复杂性,而且可以使子系统和其他组件的通信关系更简洁、更容易控制,可以最大幅度地降低组件之间的耦合度。
外观模式——基本结构
子系统的接口不一定是具体的外观类,它和外观类之间的关系:
(1)子系统的接口是一个抽象类,不包含任何属性和具体实现,其中定义的所有的接口函数都是纯虚函数;而外观类是该抽象类的派生类,隐藏在子系统中。在这种实现方式中,客户程序所看到的只有一个纯粹的接口,而具体的实现都被外观类封装到了子系统的内部。
(2)子系统的接口就是外观类的头文件,客户程序可能会看到一些外观类的私有属性和私有方法。
外观类一般应以单件类的形式出现,这样,客户程序就可以通过单件类的静态方法获得子系统的唯一接口实例。
外观类要负责创建和销毁子系统中其他的相关对象,管理其他对象的生命周期。
对于一个子系统来说,外观类就是这个子系统的边界类。
总结
外观模式是面向对象编程中的关键模式,也是封装子系统实现细节的有效手段。