使用部分常见的实现设计C类
发布时间:2020-12-16 09:46:12 所属栏目:百科 来源:网络整理
导读:我正在设计一个C模块.该模块可以接收3种不同类型的请求:Request-A,Request-B和Request-C. 对于每种类型,我都有一个相应的处理程序类:RequestHandler-A,RequestHandler-B和RequestHandler-C(所有这些都实现了IRequestHandler接口). 每个处理程序都必须执行
我正在设计一个C模块.该模块可以接收3种不同类型的请求:Request-A,Request-B和Request-C.
对于每种类型,我都有一个相应的处理程序类:RequestHandler-A,RequestHandler-B和RequestHandler-C(所有这些都实现了IRequestHandler接口). 每个处理程序都必须执行某些操作才能满足其请求. 例如,RequestHandler-A需要按顺序执行: 动作1 动作2 动作3 动作4 行动-5 RequestHandler-B需要按顺序执行这些操作: RequestHandler-C需要按顺序执行: 一个动作的结果将被下一个动作使用. 我正在努力设计这些类,以便在处理程序之间重用常见的动作实现. PS:为了使事情更有趣,还有一个要求,如果Action-2失败,我们应该用不同的数据重试它.但也许我在想太远了. 解决方法
“常见实现”意味着您的解决方案与继承无关.继承用于接口重用,而不是实现重用.
你发现你有共同的代码,只需使用共享功能: void action1(); void action2(); void action3(); void action4(); void action5(); struct RequestHandlerA : IRequestHandler { virtual void handle( Request *r ) { action1(); action2(); action3(); } }; struct RequestHandlerB : IRequestHandler { virtual void handle( Request *r ) { action2(); action3(); action4(); } }; struct RequestHandlerC : IRequestHandler { virtual void handle( Request *r ) { action3(); action4(); action5(); } }; 假设公共函数只是内部帮助器,您可能希望将它们设置为静态(或使用匿名命名空间)来获取内部链接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |