网站没备案能访问吗,wordpress 生成,成品网站代理,wordpress 读取文章基本概念
适配器模式#xff08;Adapter Pattern#xff09;是一种结构型设计模式#xff0c;允许将一个类的接口转换成客户端所期望的另一个接口#xff0c;可以让原本由于接口不兼容而不能一起工作的类能够一起工作。
适配器模式需要实现的部分为#xff1a;
Target类…基本概念
适配器模式Adapter Pattern是一种结构型设计模式允许将一个类的接口转换成客户端所期望的另一个接口可以让原本由于接口不兼容而不能一起工作的类能够一起工作。
适配器模式需要实现的部分为
Target类定义客户端使用的接口。Adaptee类需要被适配的类它已经存在但接口与Target类不兼容。Adapter类适配器类通过实现Target接口并持有一个Adaptee对象来对其进行适配。
使用场景
当需要将一个类与另一个不兼容的接口进行协同工作时。当需要重用某个类但其接口与所要求的不匹配时。当需要一个类去实现多个接口时。
实现
QT源码信号与槽机制
我们都知道信号与槽机制可以连接两个参数并不完全相同也就是接口不兼容的两个类中的函数。以下是connect函数的实现 static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType Qt::AutoConnection);
可以看到这里返回了一个静态的 QMetaObject::Connection 对象查看定义
class Q_CORE_EXPORT QMetaObject::Connection {void *d_ptr; //QObjectPrivate::Connection*......
}//QObjectPrivate::Connectionstruct Connection : public ConnectionOrSignalVector{// 连接到此对象中插槽的连接的链表下一个在基类中Connection **prev;// 连接到此对象中信号的连接的链接列表QAtomicPointerConnection nextConnectionList;Connection *prevConnectionList;//信号发送者QObject *sender;//信号接收者QAtomicPointerQObject receiver;......};
可以看出 QMetaObject::Connection 里面有一个d指针指向 QObjectPrivate::Connection而QObjectPrivate::Connection 里定义了信号与槽的各种信息也就是作为适配器。
总结一下在信号与槽中
源接口任何 QObject 类的信号用于触发某些操作。 适配器QMetaObject::Connection 里面定义了信号与槽的各种信息。 目标接口一个槽函数或者是一个 QObject 类的成员函数用于响应信号。