流畅的界面和类复杂性

Im0*_*ity 6 php language-agnostic fluent-interface chaining

问题:使用许多方法实现流畅的接口会使类复杂度指标增长得非常快.

如何保持实现流畅界面的类的低复杂性?

有关特定课程的一些信息:

  • Class已经有25种方法,还会再增加15种方法.
  • 类中的所有方法都以$this->wrapped某种方式转换对象.
  • 几个(5-7)方法重用已经存在的方法(那些方法可以提取到类并通过继承添加,这里没有问题).

已经考虑过选项:

  1. 特征 - 我想支持PHP 5.3及更高版本.
  2. 每个方法一个类 - 大规模扩展链,不好.
  3. '插件' - 辅助类以某种方式注入"主类",通过魔术方法调用,并通过@method注释添加自动完成支持.

高度期待任何选项的反馈(关于设计,性能,可维护性等).

检查过的例子:

  1. Lodash:170- areh方法,1类,8400行

  2. Doctrine2 QueryBuilder:40 + 40-ish方法,2个类,1400 + 600行代码; 通过ExpressionBuilder课程分开

  3. Symfony2 FormBuilder:10-areh暴露方法,1类,300行


问题可以被认为是与语言无关的 - 从PHP实现和设计观点的答案都同样受欢迎.

编辑:

目的是对函数式编程尼斯(易于使用和易于维护)工具(map,reduce,等)

Mar*_*her 0

一种方法是拥有一个简单、可靠的基类,该基类提供用于实现流畅接口类的工具方法。然后,流畅的接口类只需调用基类来完成它所做的一切,将复杂性降低到单个流畅的接口类。

您已经设计好流畅的界面了吗?(我想知道您实际上会使用多少种方法。)