ReSharper 2025.2 Help

简化对象创建

您是否曾经遇到过这样的情况:您不断扩展类,添加了越来越多的构造函数,每个都有其特定的配置? 您是否曾希望可以将对象创建代码提取到一个单独的类中,并重新组织以提高可读性?

让我们来看一个直接取自 Refactoring to Patterns书中的场景。 这里我们有几个贷款构造函数,它们都在其参数中隐藏了真正的意图:

public class Loan { public Loan(double commitment, int riskRating, int maturity) { // implementation omitted } public Loan(double commitment, int riskRating, int maturity, DateTime expiry) { // implementation omitted } public Loan(double commitment, double outstanding, int riskRating, int maturity, DateTime expiry) { // implementation omitted } }

现在,让我们将这些构造函数重构为工厂方法。 为此,我们依次处理每个构造函数,并使用 用工厂方法重构构造函数重构 菜单中选择 Control+Shift+R

用工厂方法替换构造函数

因此,我们可以为新的工厂方法命名,同时也可以指定一个不同的类来放置工厂方法。

用工厂方法替换构造函数

最终,您会在 LoanFactory 类中得到一个工厂方法:

public class LoanFactory { public static Loan CreateTermLoan(double commitment, int riskRating, int maturity) { return new Loan(commitment, riskRating, maturity); } }

对所有相关的构造函数执行此操作将生成一个完整的工厂类。 请注意,如果您将工厂方法放在原始类中(例如 Loan ),相应的构造函数将变为私有。 但由于我们将这些构造函数移到了一个单独的工厂类中,这些构造函数仍然是公共的。

最后修改日期: 2025年 9月 27日