gpt4 book ai didi

c++ - 构建可重用代码

转载 作者:行者123 更新时间:2023-11-28 01:36:51 25 4
gpt4 key购买 nike

我有一个类做类似的事情:

class B{
void x(){
statement-block1;
statement-block2;
statement-block3;
statement-block4;
}

void y(){
statement-block5;
statement-block6;
statement-block7;
statement-block8;
}
}

我需要添加一个执行此操作的新类:

class C{
void x(){
statement-block1;
statement-block200;
statement-block3;
statement-block4;
}

void y(){
statement-block5;
statement-block6;
statement-block700;
statement-block8;
}
}

我正在考虑以这种方式组合可重用逻辑:

class A{
void x(){
statement-block1;
statement-block2;
u();
statement-block4;
}

void y(){
statement-block5;
statement-block6;
v();
statement-block8;
}

virtual void u(){
default-message;
}

virtual void v(){
default-message;
}
}

class B : A{
void u(){
statement-block3;
}

void v(){
statement-block7;
}
}

class C : A{
void u(){
statement-block200;
}

void v(){
statement-block700;
}
}

是否有更好的方法来实现这一点,注入(inject)子类特定代码的不同/更好的方法,或者是否有我可以使用的设计模式?将来我可能要添加更多类似于 B 和 C 的类。

谢谢!

最佳答案

这取决于您要实现的目标。如果语句 block 可能会在运行时发生变化(动态),那么使用您在示例中展示的虚拟指针,但是如果这些不是动态的,则传递一个模板参数,这样您就不必为您支付的费用不要使用(虚拟指针)。即

class B
{
public:
template <typename T>
void x(T f)
{
f();
}
};

void g(){ std::cout << "value" << std::endl;}

int main()
{
B b {};
b.x(g);
}

关于c++ - 构建可重用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48918045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com