C++中的可可代表团模式
Cocoa Delegation Pattern in C++
我正在尝试在c ++中实现cocoa的委托模式。
我试图在图像选择器示例中模拟可可委托模式,如下所示。但是,我不确定这是在C++中实现的正确方法,并且想知道是否有人对更好的东西有想法。我还注意到我出来的这个实现与传统的C ++委托无关(?( 见这里 (。我什至不确定上一个链接中的委托实际上是委托模式(我认为它只不过是函数指针(。
class ImagePickerControllerDelegate { // defined as protocol in swift
public:
virtual void ImagePickerFinished() = 0;
};
class ImagePickerController {
public:
ImagePickerControllerDelegate * delegate;
private:
void findImageDirectory() {}
void checkUserPermission() {}
void loadImage(char* image_name) {}
void andDoOtherThings() {}
public:
void Run() {
// doing long stuff here ..
findImageDirectory();
checkUserPermission();
loadImage("lena");
andDoOtherThings();
// done, notify
delegate->ImagePickerFinished();
// other clean-up etc.
}
};
class MainViewController: ImagePickerControllerDelegate {
ImagePickerController ImagePicker = ImagePickerController();
public:
MainViewController() {
this->ImagePicker.delegate = this;
}
void UserClicked() {
ImagePicker.Run();
}
virtual void ImagePickerFinished() {
std::cout << "image picker finished..";
}
};
简而言之,我需要在C++中简单而美观地实现可可委托模式的好建议。我真的不喜欢丑陋的 STL 模板的东西,所以请不要给出使用它的建议/示例。
我认为Cocoa SDK中的委托实现了两种模式:观察者模式和委托模式。
在您的实现中,您实现了观察者模式的一部分,其中 MainViewController 通知委托有关事件的信息。
cocoa 中的委托模式示例包括表视图委托和数据源。表视图为委托和数据源提供单元格和视图的创建。
侦听器模式的实现是可以的。
相关文章:
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 为什么在保护模式下继承升级不起作用
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 此模式的C++RegEx
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 使用可变模板的Broadcaster/Listener模式
- c++方法参数只能在linux的发布模式下自行更改
- 资源管理设计模式
- 使用 mod_gsoap 部署服务时,如何在 Gsoap 中更改 soap 上下文的模式?
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 小字符串优化(调试与发布模式)
- 可视化C++:发布模式的运行时库作为'Multi-threaded Debug DLL'
- 如何设计具有不同类型的通知和观察器的观察者模式?
- 在C++的一系列数字中查找重复模式
- 是否允许使用带有"w+"模式的 freopen 进行标准设置?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- С++ wxWidgets:代码架构,设计原则和模式
- C++中的可可代表团模式