不完美的库类
症状
有时候你在工具包(依赖包)中找不到你想要的工具(方法或者函数),但是又没有其它工具包可以替换,因为这个工具包的其它工具你却十分喜欢,这种时候你无法直接修改它,只能在客户端打补丁来补足你需要的那个函数。
Incomplete Library Class
病因
库的作者没有未卜先知的能力,因为他也无法考虑设计是非常的完美周全,所以导致了可能某些功能在将来并没有完美支持。
导致的健康问题
如果调用端只有一处想使用这个类库,可以添加扩展的代码,但是如果有多处使用相同的功能,可能会在很多地方都出现这样相同的代码,然而这段扩展代码本该属于那个不完美的类。
治疗
- 如果想修改库类的一两个函数
尝试运用 Introduce Foreign Method 在目标类中建立一个函数,用来提供你需要的功能
IntelliJ IDEA 练习视频
- 如果想加一大堆额外行为
尝试运用 Introduce Local Extension 1.子类化 2.包装类)使"函数和数据被统一封装,防止其它类部分过分复杂"
IntelliJ IDEA 练习视频
康复
现在我可以找到锤子和扳子来处理我想做的事情了
InComplete Library Class After Refactoring
网友评论