Ear*_*rlz 9 .net c# extension-methods design-patterns
我最近一直在考虑使用扩展方法在我控制的类上实现辅助工具(即,在同一个程序中,我可以修改).它背后的基本原理是,很多时候,这些辅助工具在非常特定的场景中使用,并且不需要访问类的内部值.
例如,假设我有一个StackExchange类.它有像PostQuestion和Search和的方法AnswerQuestion.
现在,如果我想手动计算我的声誉以确保StackOverflow不会欺骗我,该怎么办?我会实现以下方面的内容:
int rep=0;
foreach(var post in StackExchangeInstance.MyPosts)
{
rep+=post.RepEarned;
}
Run Code Online (Sandbox Code Playgroud)
我可以向StackExchange类添加一个方法,但它不需要任何内部,并且它仅用于程序的一个或两个其他部分.
现在想象一下,如果你有10或20个这些特定的辅助方法.在某种情况下肯定有用,但绝对不适用于一般情况.我的想法是改变像
public static RepCalcHelpers
{
public static int CalcRep(StackExchange inst){ ... }
}
Run Code Online (Sandbox Code Playgroud)
喜欢的东西
namespace Mynamespace.Extensions.RepCalculations
{
public static RepCalcExtensions
{
public static int CalcRep(this Stackexchange inst){...}
}
}
Run Code Online (Sandbox Code Playgroud)
注意命名空间.理想情况下,我会使用它来在特定场景中对扩展方法进行分组.例如,"RepCalculations","Statistics"等.
我已经尝试过搜索是否听说过这种类型的模式,并且没有找到任何证据表明扩展方法被用于除了你无法修改的类之外的任何东西.
这种"模式"有哪些缺点?我应该坚持继承或组合,还是只是一个好的'静态助手类?
| 归档时间: |
|
| 查看次数: |
1339 次 |
| 最近记录: |