Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 如何重构由一个公共方法和多个只进行检查的私有方法组成的类的代码_Oop_Design Patterns - Fatal编程技术网

Oop 如何重构由一个公共方法和多个只进行检查的私有方法组成的类的代码

Oop 如何重构由一个公共方法和多个只进行检查的私有方法组成的类的代码,oop,design-patterns,Oop,Design Patterns,我正在编写一个代码,我觉得有点烦人。 实际上,该类由一个公共方法和许多私有方法组成,用于检查内容和/或输出一些日志 代码中有3种类型的私有方法。 第一个私有方法仅对输入数据进行一些检查,如果有不一致的地方,则引发。(3种方法) 秒只生成一些日志报告。(2种方法) 第三部分准备并保存数据(2个方法)(本课程的目的),它们由许多其他我必须模拟的外部库组成 然后在我们将调用execute()的类的公共方法中调用每个私有方法 每个测试都在execute方法上运行,execute方法包含私有函数背后代码的

我正在编写一个代码,我觉得有点烦人。 实际上,该类由一个公共方法和许多私有方法组成,用于检查内容和/或输出一些日志

代码中有3种类型的私有方法。 第一个私有方法仅对输入数据进行一些检查,如果有不一致的地方,则引发。(3种方法) 秒只生成一些日志报告。(2种方法) 第三部分准备并保存数据(2个方法)(本课程的目的),它们由许多其他我必须模拟的外部库组成

然后在我们将调用execute()的类的公共方法中调用每个私有方法

每个测试都在execute方法上运行,execute方法包含私有函数背后代码的整个逻辑。 为了测试代码,我在方法中模拟了许多外部方法的调用,这些方法保存并查看在测试中运行execute方法时调用的参数,因为我编写的每个测试都有75%的函数模拟调用。 真烦人

我想拆分它,但每次尝试时,我都会查看它,发现它毫无用处,因为它更像是在另一个文件中提取私有方法

下面是该类的伪代码。它在python中,但与此无关:

class MyDigustingClass():

    def _first_check(self, args...):
        pass

    def _second_check(self, args...):
        pass

    def _third_check(self, args...):
        pass

    def _log_method_1(self, args...):
        pass

    def _log_method_2(self, args...):
        pass

    def _prepare_data(self, args...):
        pass

    def _save_data(self, args...):
        pass

    def execute(self, args...):
        # Call check methods

        # Call prepare_data

        # Call save_data

        # Call logs method
正如我所说的,我很难找到一个重构的好主意,因为我做得再好不过了。
您有什么建议。

为每种“类型”的私有方法创建一个类。只模拟那些类。我同意@ZoharPeled。正确的名称应该是
责任链
@antepluvian,它肯定不是责任链。@antepluvian那会是什么?@jaco0646那会是什么?