本文介绍C++设计模式中的接口隔离示例。使用接口隔离独立性好,且只限于它的接口(单一性原则)。
Device
类继承于 AudioDevice
与 VideoDevice
;Device
中:AudioDevice *audioDevice() { return this; } // 接口隔离VideoDevice *videoDevice() { return this; } // 接口隔离
this
指针,但实际只能访问到对应的返回值,这就是接口隔离的核心所在。#include <iostream>
using namespace std;
class AudioDevice {public: AudioDevice() {} void open() { cout<<"Open Audio Device."<<endl; } void close() { cout<<"Close Audio Device."<<endl; }};
class VideoDevice {public: VideoDevice() {} void open() { cout<<"Open Video Device."<<endl; } void close() { cout<<"Close Video Device."<<endl; }};
class Device : public AudioDevice, public VideoDevice {public: Audio() {}
AudioDevice *audioDevice() { return this; } // 接口隔离 VideoDevice *videoDevice() { return this; } // 接口隔离};
int main(int argc, char *argv[]){ Device device; device.audioDevice()->open(); device.audioDevice()->close();
device.videoDevice()->open(); device.videoDevice()->close(); return 0;}
你才小学生
(nicaixiaoxuesheng)