我想在C++编写代码(C++ 11)根据鲍勃叔叔马丁所描述的清洁建筑理念很简单的例子在这里(下图):

这个想法是由Controller读取一些文本并由Presenter打印.我已经做了一些事情,但它看起来并不像它正在遵循博客文章的干净流程和DIP.
除此之外,我认为流程是错误的,例如,IUseCaseInputPort需要知道IUseCaseOutputPort(读取函数将IUseCaseOutputPort作为输入参数,从而创建另一个依赖项......).
如果有人能给我一些关于实现这个的最佳方法的提示,我将非常感激.提前谢谢了.
#include <iostream>
#include <string>
#include <memory>
class IUseCaseOutputPort {
public:
virtual void print(std::string message) = 0;
virtual ~IUseCaseOutputPort() {};
};
// 2 Presenters
class HtmlPresenter: public IUseCaseOutputPort {
public:
void print(std::string message) {
std::cout << "<p>" << message << "</p>" << std::endl;
}
};
class TextPresenter: public IUseCaseOutputPort {
public:
void print(std::string message) {
std::cout << message << std::endl;
}
};
//
class IUseCaseInputPort {
public:
virtual void read(std::shared_ptr<IUseCaseOutputPort> output) = …Run Code Online (Sandbox Code Playgroud) 我有大约200 x 200 x 200 x 150需要在浏览器上绘制的网格。
这可以表示为Xx Yx Zx Color。3D 散布通常具有此功能。
我已经尝试过plotly.Scatter3d对于较小的数据集来说效果很好。
我看了一下,Datashader但不幸的是只适用于 2D。我也检查了Datashader+Holoviews但没有找到任何解决方案......
我越接近的是来自 PlotLy 的 MRI Slice 示例:https://plot.ly/python/visualizing-mri-volume-slices/
如果有可能添加额外的切片器(X、Y 和 Z),这可能是一个解决方案。不是我想要的,而是一个解决方案。
任何如何实现这一目标的想法将不胜感激。谢谢