首页 > 解决方案 > 创建仅负责创建其他对象(即工厂)的类时的最佳实践?

问题描述

我经常发现自己创建了以“Factory”为后缀的类。这些类往往只负责创建特定类或一组相关类。但是我一直觉得这可能不是最佳实践,并且有更好的方法来解决这个问题。我认为这不是最佳实践的原因之一是,尽管我使用的是“工厂”后缀,但实际上并没有使用工厂设计模式。

假设我有一个类Vehicle,它包含两个变量makemodel. 我希望我的问题能够创建许多这样的Vehicle对象,所以我想封装代码以在单个类中创建这些对象。我可能会创建下面的类。

public class VehicleFactory
{
    public Vehicle CreateVehicle(string make, string model)
    {
         //create vehicle..
         return vehicle;
    }
}

然后VehicleFactory可以在我的程序中的任何地方使用,而无需重复代码并违反 DRY。

当我重构代码时,我经常需要创建这类工厂类,更具体地说,当我发现两个或多个创建相同对象的类时。我想通过提取重复的代码然后将其放在特定的工厂类中来重构代码。

有没有更好的方法来解决这个问题?

标签: c#refactoringdry

解决方案


Factory模式更适用于更复杂的场景,例如为具体类提供公共接口,然后Factory类将创建具体类的适当对象。

在您的场景中,代码可以直接放在类的构造函数中。

例如阅读此内容:)


推荐阅读