|
1
|
| Steve Dunn supercat · 技术社区 · 15 年前 |
|
1
3
这主要是因为您希望在接口上执行一些常见的操作,但是由于接口没有实现,所以我们不能。 另一次,我将创建扩展方法,用于我不拥有的类型,但希望将一系列操作封装到单个方法中。 |
|
2
4
扩展方法对于扩展没有源代码的类非常有用,特别是如果您想扩展一组从特定基派生的类,但又不想创建自己的派生版本来添加新方法。当您要扩展实现一个或多个接口的某些类时,它们也很有用,但不能使它们都派生自基类。我真的不会用它们来做别的。 |
|
|
3
0
一个简单的例子:假设在基础域模型中,您可能有一个学生实体,它封装了所有的核心操作,如注册、参加、推迟等。假设项目中的一个子系统允许学生注册工作通知,并在发布新工作时通过电子邮件通知。像student.registerForJob和student.notifyJobPosting这样的行为并不是真正的核心功能。因此,尽管我拥有学生类代码的完全访问权限,但我不会将这些行为添加到学生核心实体中,因为它可能会打破您的设计边界或原则(例如open/closed或YAGNI),相反,仅在招聘子系统中为学生实体创建这些扩展方法更有意义。 显然,通过继承对Student进行子分类也可以让您实现相同的功能,但是扩展方法显然提供了一种非常灵活的替代方法。从本质上讲,可拓方法是实现装饰设计模式应用的一种方法。更多地了解使用decorator设计模式的动机可能会进一步澄清这些疑问。 |
|
|
Mear1628 · vb.net从随机选择的端口号接收UDP 1 年前 |
|
|
user1946932 · .Net正则表达式在所有字符前添加空格 1 年前 |
|
|
user1946932 · 正则表达式:删除连续两个以上的<br>? 1 年前 |
|
|
Josh · 通过反思访问孩子的财产 1 年前 |
|
|
Khu RJ · 更新网格中的单元格-DevExpress网格控件 1 年前 |
|
|
Mick · VB.NET Regex。替换不起作用(数组未更新) 2 年前 |