我很难做出设计决定

我在python中有一个类,用于处理表单数据,该数据与其他表单数据非常相似,因此我将其重构为自己的对象,以便其他类可以重用。

临界点是使这个表单处理器成为类的成员或类的父级的天气。

如果这个术语有误,请纠正我,这就是我所纠结的:

基于整体继承的类:

class FormProcessor(object):
    def post(self):
        # ... process form data

class PageHandler(RequestHandler,FormProcessor):
    def get(self):
        # show page

或者更模块化的基于成员的类:
class FormProcessor(object):
    def process(self):
        # ... process form data

class PageHandler(RequestHandler):
    def __init__(self):
        self.processor = FormProcessor()
    def get(self):
        # show page

    def post(self):
        self.processor.process(self.postdata)

我倾向于第二种,但我不确定在可维护性方面会产生什么后果。我倾向于它的原因是,我喜欢将处理视为发生的操作,而不是 PageHandler 的主要部分,因此将其设为成员对象而不是父对象是有意义的。

令我烦恼的是,当类插入功能时,它最终会在一个实例上得到很长的函数列表,我试图更好地对它们进行分类,以便程序易于理解并反射(reflect)它正在建模的系统。

期待对此问题的任何建议

最佳答案

绝对要采用模块化方法。采用模块化方法的一些优点是:

  • 它使你的代码更具可读性,即更清楚 PageHandler 和 FormProcessor 做什么
  • 在你的两个类
  • 上编写 unit tests 更容易、更有效
  • 通过使用不同的 PageHandler 实现,可以更轻松地在以后更改 PageHandler 的行为

  • 一般来说,坚持一个类(class)做一件事;在维护软件时更容易看到您正在使用的内容,并且更容易编写(那时您只需考虑一个上下文)。

    关于python - 单体继承 vs 基于模块化成员的 OOP 设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1923101/

    10-11 21:24