0%

困难问题下的简单解法

以我遇到的自定义模型上的问题为例子。


问题:这里创建了一个新的资源类型来供自定义模型使用。假设这个资源类型相当于是一根水管,资源类型的名称不可能包含具体的模型类型,管子只能识别一种类型的资源。现在我有五个自定义模型需要通过该水管,如何判断现在通过该水管的是哪个类型的。

思路一:在使用该资源类型时同时使用一个参数。问题:不兼容原有的系统,维护麻烦。
思路二:创建五根水管。费力,如果添加新类型就需要添加新的水管。

解决方案: 创建子类类,继承父类,只改变其中一个模型类型的参数,问题解决。子类不用写什么,只需要基础父类,通过改一个参数的默认值来判断模型类型。


问题:这里需要新建一个类,并且被识别为某特定类型的类。在这个系统里,如果一个类的同一父类的另一个子类被系统扫描先到,那么这个类就这会被识别为该类。

思路一:去掉另一个子类。明明这个被去掉的类里什么也没有实现,并且没有任何地方使用到它,但是去掉之后就是有一个奇妙的bug,这就是老代码堆的魅力呀。
思路二:在判断模型类型时对新增加的类做一个特殊判断。这个没有问题了,但是在那个判断类型的地方改代码,有性能问题,而且这样的硬编码对有代码洁癖的你来说完全不能接受。于情于理都要换新方法。

解决方案:把可能会覆盖的类放在新增的类的后面。从物理或者说系统的意义上先识别你的类。


让我想起了一本书,《你的灯亮着吗》。也许我现在在人生路上的疑惑,坎坷,有一个我没有意识到的简单解法也说不定。