c# - 我应该在部分类中分离属性和方法吗?

标签 c# oop

<分区>

我正在为应用程序编写基础类,并希望正确构建它们以实现长期可维护性。为此,我正在研究要实现的设计模式、接口(interface)的使用、抽象类以及将持久性与事件分开。我满脑子都是模式、范例和原则。

我有一个类 Product,我为其创建了一个接口(interface) IProduct。我相信我需要制作 Product 和抽象类,因为它的任何实例都必须是属性 Category 的六个值之一。那么,我的第一个问题是:以下方法是否合适?

abstract class Product : IProduct
{
    // Fields
    // Properties
    // Methods
}

interface IProduct
{
    // Properties
}

public class Model : IProduct
{
    public Model()
    {
        Category = "Model";
    }

    // Model-specific fields
    // Model-specific properties
    // Model-specific methods
}

我读过的文章,包括之前在这里回答的问题,都表明我应该在设计时将属性和方法(持久性和 liveness )分开。为此,上面的代码真的应该像这样吗?

abstract class Product : IProduct
{
    // Fields
    // Properties
    // Methods
}

interface IProduct
{
    // Properties
}

public partial class Model : IProduct
{
    public Model()
    {
        Category = "Model";
    }

    // Model-specific fields
    // Model-specific properties
}

public partial class Model : IProduct
{
    // Model-specific methods
}

当然,这假设我的第一部分是正确的,但也许答案会启发我应该如何做事。

最后,如果属性和方法的分离是一件好事,并且 Product 有一些方法适用于它的所有具体版本,我是否应该像这样将它们移动到一个单独的抽象类中?

abstract class Product : IProduct
{
    // Fields
    // Properties
}
abstract class Product : IProduct
{
    // Methods
}

最佳答案

我看到保留 partial 类的唯一用途是当两个独立的系统更新这两个文件时。例如,当使用更新自己的类文件的 Visual Studio 设计器(例如 Windows 窗体设计器)时就是如此。对于您拥有的另一个自动生成的类,另一件事可能是正确的。一个由系统维护,一个由您维护。

我从来没有想过要自己维护两个单独的 partial 类文件。我通常使用 #region 指令来拆分方法和属性。

关于c# - 我应该在部分类中分离属性和方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28284893/

相关文章:

java - 静态绑定(bind)和动态绑定(bind)

c# - 设置 HttpContext.Current.User 抛出空引用异常

c# - 找不到 NetOffice progid

c# - 无法在javascript中通过id获取值文本框

c++ - 如何在C++中制作类列表

java - 如何将对象数组打印到屏幕上?

c# - 电子邮件通知架构问题

c# - 对 IEnumerable 的更改不会在查询之间保留

Java 不一致的继承机制?

javascript - 引入抽象类或属性时 typescript 错误?