我刚刚在我的一个课程中创建了以下方法
public static bool Assimilate(this List<Card> first, List<Card> second)
{
// Trivial
if (first.Count == 0 || second.Count == 0)
{
return false;
}
// Sort the lists, so I can do a binarySearch
first.Sort();
second.Sort();
// Copia only the new elements
int index;
for (int i = 0; i < second.Count; i++)
{
index = first.BinarySearch(second[i]);
if (index < 0)
{
first.Insert(~index, second[i]);
}
}
// Edit
second = null;
return true;
}
我的一个朋友在检查我的代码时说,我不应该创建“扩展 List 类”的方法,因为这违反了开放/封闭原则。
如果我想扩展类 List,我应该创建一个继承自 List 的新类,并在该新类中实现我的“合并”方法。
他说得对吗?扩展List类违反了开闭原则?
我不认为这违反了开闭原则。我认为,如果我必须“更改”现有代码来向对象添加功能,那么我就违反了打开/关闭,但扩展对象正是您添加功能时应该做的事情。
您可以在不同的语言中以不同的方式扩展对象,继承只是一种方式; c# 使您能够向现有类添加扩展方法。
请记住“开放”扩大- 关闭修改'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)