我正在使用C#。我有一个产品类,其中包括sku,name,description ....以及setSku,setDescription,setImages等方法(产品附有图像)。我将这些方法保留在Product类中,但由于客户端可以使用大量设置来设置sku和描述以及图像,因此该类变得非常非常大。课堂上有很多代码。所以我打算将大型Product类分解成ProductSku类,ProductDescription类等等。这里的问题是所有类都需要访问一些相同的字段。我开始在那些单独的类上调用方法并一遍又一遍地传入相同的对象,但这似乎不对。所以现在我决定创建一个全局(使用Singleton模式)CurrentProduct类,它具有我创建的所有其他Product类所需的字段。 我的问题听起来不错,你会做什么?
我正在处理的程序,在基本级别上,从database1中的一个表中获取产品,并将产品保存到database2上的表中。但是,用户可以使用很多设置来了解他们在进入database2时希望来自database1的字段的外观。
澄清:上面引用的set和get方法不是getter和setter方法。我使用属性但是我将它们称为set,因为在更新之前有很多代码用于格式化某些字段。我理解这种困惑,并为不澄清而道歉。
答案 0 :(得分:4)
当前产品的单身听起来确实不好。您只是用不同的名称调用全局变量。
我不知道Sku是什么,但至于其余部分(描述和图像),如果它们是产品的属性(我认为它们是),则它们属于Product类。
如果你将你的“课堂作品”一起传递给他们很多,这是他们属于一起的强烈信号。
如果您愿意,可以使用partial
关键字将代码(不是类)分成几个文件。像这样:
// This file is Product.CodeAboutThingA.cs
public partial class Product
{
// Some stuff related to A here...
}
在另一个档案中:
// This file is Product.CodeAboutThingB.cs
public partial class Product
{
// Some stuff related to B here...
}
答案 1 :(得分:2)
要给我0.5美分,一个只能通过将其分成部分来管理的类有相当多的代码味道。 将整个事物分成几个类听起来不错,特别是当你已经确定SKU等东西成为它自己的类时。
你应该问自己的事情是......
从我的角度来看,当你有一个包含1k +代码行的类时,仍然有很多理解错过了你的“产品”究竟是什么以及它在你的应用程序范围内的表现......
答案 2 :(得分:1)
也许您应该考虑将它合并回一个类,但为了使其可读,请使用部分修饰符?
另一个答案是创建抽象类Product并从中继承专门的类。