Collections 用更抽象的方法包装实现

Collections 用更抽象的方法包装实现,collections,refactoring,implementation,abstraction,Collections,Refactoring,Implementation,Abstraction,首先,如果这个问题不清楚,我深表歉意,我不知道更好的表达方式 所以,我目前正在进行一些轻松的阅读(Robert C Martin的干净代码),我偶然发现了一些我不懂的东西 这句话是由Ron Jeffries写的,他是极限编程的作者 “经过多年的实践(编码)工作在我看来,所有的程序都是由非常相似的元素组成的。一个例子是“在集合中查找内容”,我们经常发现自己需要该集合中的特定项目,当我发现这种情况发生时,我通常会将实现包装在一个更抽象的方法或类中。 例如,Jefferies突出显示的粗体部分意味着什

首先,如果这个问题不清楚,我深表歉意,我不知道更好的表达方式

所以,我目前正在进行一些轻松的阅读(Robert C Martin的干净代码),我偶然发现了一些我不懂的东西

这句话是由Ron Jeffries写的,他是极限编程的作者

“经过多年的实践(编码)工作在我看来,所有的程序都是由非常相似的元素组成的。一个例子是“在集合中查找内容”,我们经常发现自己需要该集合中的特定项目,当我发现这种情况发生时,我通常会将实现包装在一个更抽象的方法或类中。


例如,Jefferies突出显示的粗体部分意味着什么?/p>例如,您有一个方法,它可以查看对象X的集合,并基于键字段返回一个方法

在代码的其他地方有另一个方法,它查看对象Y的集合并基于键字段返回一个

为什么不简单地创建一个可以传递对象集合和键字段的通用帮助器类呢?您可以将此帮助器设计为通用的,并适用于上述两种情况。您现在拥有了一个有用的实用工具,可以在代码中反复使用

或者,您可以将抽象基类引入类X和类Y。现在,它们都实现了抽象基类中定义的“搜索”方法。搜索调用现在是泛型的,可以在整个代码中使用。在集合中查找现在在代码中是泛型的

其目的是识别重复的行为模式,并用通用代码处理它们

这有几个好处:

  • 代码更具可读性
  • 对分布在代码中的行为的更改只需要在一个地方完成
  • 代码的使用被简化,因为常见的操作都是以类似的方式执行的