抱歉,我找不到更好的问题格式。
我有两个班级(设计,颜色)
设计类可以有多种颜色,对于每种颜色,设计可以指定一些属性,例如(Design-Color)组合的名称。
然后我有一个Fabric类,它有一个Design-Color组合。
在这些类之间实现这种关系的适当方法是什么?
这是一个建议的模型(我认为是错误的):
class Design {
public string Name { get;set;}
public int StringNumber {get;set;}
///some other properties.
}
class Color {
public string Name { get;set;}
///some other properties.
}
class ColoredDesign {
public Color Color { get;set;}
public Design Design { get;set;}
public string ColoredDesignName { get;set;}
public string WashingWay { get;set;}
}
class Fabric {
public ColoredDesign { get;set;}
public float Length { get;set;}
}
设计与颜色之间缺少关系,指定了单一设计的可能颜色。
该应用程序适用于Fabric工厂,
首先,他们定义设计及其颜色,并定义指定设计中的每种颜色在称为洗涤方式的属性中的准备方式,以及每种设计中每种颜色唯一的许多其他属性。
因此每个Fabric必须告诉它属于哪种颜色和设计。
例如:假设我的设计名为(A) 它有以下颜色:
然后我可以拥有一个(A-RD)长度为100M的Fabric。
和另一种(A-BL)和200 M长度的织物。
答案 0 :(得分:0)
回答您的问题并不容易,因为缺少的部分与经常推动设计的业务需求有关。我几年来一直在做DDD,在制作模型时对我有很大帮助,这是一个商业语言(翻译成UL)以及我应该考虑的要求。
我不确定你是否担心DDD,但从你的问题我可以说你在好的轨道上。对我来说,Design和Color之间的关系可以实际上是ColoredDesign或ColouredDesign抽象。设计和颜色只是你构成另一个抽象的一部分,这对你的模型很重要。因此,您的Fabric类是您介绍的非常好的东西。它可能包含创建ColouredDesign对象的逻辑,包含如何构造它的约束等等。然后客户端不关心创建逻辑,也没有耦合到它消耗的对象的创建约束。
因此,从我可以在你的问题中看到的一些细节,我认为这是一个可行的设计。也许其他人对此有另一种观点。
答案 1 :(得分:0)
我建议您在public Color[] AvailableColors{get;set;}
类中创建一个属性Design
,以表示某些颜色的设计可用性。然后在Fabric
中,如果布料颜色是设计可用颜色之一,则可能有两个“设计”和“颜色”属性,并检查业务逻辑。我建议您删除ColoredDesign
类,因为如果没有Fabric,IMO设计和颜色之间的真正连接没有意义。如果由于任何原因你坚持要求ColoredDesign
课程,你应该检查ColoredDesign
的颜色,而不是我之前提到的Fabric
。如果你保留ColoredDesign
,它将如下: