継承での拡張での問題点

一般的に簡単な拡張の方法は、継承という方法があります。 CGI::Builder::PathInfoMagicもこれにあたります。

CGI::Builderにはプラグインを組み込むという手法が用意されているのですが、それには、process()の変更は含まれないので、継承というかたちをとることにしました。 ただこの場合、他の人が同じように、新しい機能を盛り込むために、process()を継承というかたちで拡張し、リリースしたとします。 この場合、この両方を同時に使うことができなくなってしまいます。 これが、私の考える、継承での拡張での一番の問題点です。

拡張性のあるモジュールを作成したい場合は、できるだけプラグイン的に拡張できれば幸せになれそうです。
(このケースで、CGI::Builderをあげましたが、CGI::Builder自体はすばらしいもので、私の実装方法がへたれなだけです。)

Log::Dispatch などは、プラグイン機能を組み込んで成功している良い例のモジュールです。