我正在构建一个像数码相机一样的小应用程序,我想知道这是不是一个好的oop方法,在我构建了一个相机对象后,我给了它一个内存卡类,内存类从枚举类中获取卡的类型,大小从枚举类中获得。
现在,我需要将这两个合并到一个数组中,即存储卡。
public enum MemoryCardType
{
Sd,
xd,
MicroSd,
}
public enum MemoryCardSize
{
TwoGB = 2024,
FourGB = 4048,
EightGB = 8096
}
public class MemoryCard
{
public MemoryCard(MemoryCardType memoryCardType, MemoryCardSize memoryCardSize)
{
this.MemoryCardType = memoryCardType;
this.MemoryCardSize = memoryCardSize;
}
public MemoryCardType MemoryCardType { get; set; }
public MemoryCardSize MemoryCardSize { get; set; }
}
这是最好的方法吗?
发布于 2013-01-24 20:04:20
您的方法没有任何问题,但这实际上取决于您计划如何使用这个类。
然而,您应该注意的是,代码会检查类的对象(在本例中为存储卡的类型/大小),以确定如何使用该对象。尽可能地,应该由对象决定如何处理其状态,而不是外部/客户端代码。
这可能看起来很模糊,但如果没有更多的细节,就很难给出任何具体的建议。
但是,选择以兆字节为单位的大小作为枚举的值有什么原因吗?对于使用您的代码的人来说,这一点都不明显。
发布于 2013-01-24 20:02:39
就我个人而言,如果值真的很重要,我不会使用枚举。您无法真正确保这些值是您所期望的。尤其是,如果有其他开发人员在同一项目上工作。
这就是我要做的:
abstract class MemoryCardSize
{
public int MegaBytes { get; protected set; }
}
class TwoGB : MemoryCardSize { public TwoGB() { MegaBytes = 2024; } }
class FourGB : MemoryCardSize { public FourGB() { MegaBytes = 4048; } }
class EightGB : MemoryCardSize { public EightGB() { MegaBytes = 8096; } }
发布于 2013-01-24 20:05:14
我推荐使用工厂设计模式:http://www.codeguru.com/csharp/article.php/c19335/Guide-to-Implement-the-Factory-Pattern-in-C.htm
https://stackoverflow.com/questions/14500567
复制相似问题