当前位置:  开发笔记 > 编程语言 > 正文

为多个客户定制现有Perl程序部分的最佳方法是什么?

如何解决《为多个客户定制现有Perl程序部分的最佳方法是什么?》经验,为你挑选了0个好方法。

我有一个现有的Perl应用程序,它部署到多个客户站点.不幸的是,代码已被多次克隆,以便为个人客户进行定制.因此,现在有几个完整的代码副本,它们都有轻微的(或主要的)差异.

我的任务是通过创建一个单独的通用代码库来解决这个问题,该代码库具有针对不同客户的自定义库,这些客户端被隔离在他们自己

该应用程序已经具有类层次结构(大约120个类),其行如下:

Control.pm
  \__ BaseJob.pm
           \___Job1.pm
           |
           |__ Job2.pm
           |
           |__ Job3.pm

我的目标是通过仅修改特定客户的库来定制特定的类或方法.

我的第一直觉是为需要为特定客户定制的任何东西创建子类.这些子类将存在于客户特定的lib目录中(每个客户一个).然后,为了为客户定制类或方法,我只需要向客户库添加一个新的子类.

例如,如果Job2.pm需要自定义一个方法,我可能会创建一个子类CustomJob2,该子类继承Job2并仅包含要自定义的方法.

然后在主程序中,这个:

Job2->some_method();

变为:

CustomJob2->some_method();

问题是这会破坏所有其他客户的代码,因为他们CustomJob2的库中没有类.看来我必须CustomJob2为每个客户为库添加一个空类.

有没有更好的办法?

我考虑过的另一种可能性是使用覆盖而不是子类.主程序只需要use lib包含客户库,任何要定制的方法都可以在库中重新定义.然而,这可能是危险的,不被视为最佳做法.

我寻求StackOverflow专家的智慧,找到解决这个问题的最佳方法.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有