C# 领域驱动设计中的用户界面信息
我正在我的项目中实现DDD,有一个名为C# 领域驱动设计中的用户界面信息,c#,domain-driven-design,C#,Domain Driven Design,我正在我的项目中实现DDD,有一个名为事件的模型(如生日、聚会等) 事件具有开始和结束日期,因此具有如下模型: public class Event { private DateTime _startDate; private DateTime _endDate; // methods omitted for brevity } 到目前为止,这是好的,我很高兴 现在,在显示开始和结束日期的UI部分,用户可以选择背景颜色。这可以添加为: public class Eve
事件的模型(如生日、聚会等)
事件具有开始和结束日期,因此具有如下模型:
public class Event
{
private DateTime _startDate;
private DateTime _endDate;
// methods omitted for brevity
}
到目前为止,这是好的,我很高兴
现在,在显示开始和结束日期的UI部分,用户可以选择背景颜色。这可以添加为:
public class Event
{
private DateTime _startDate;
private DateTime _endDate;
private Color _dateColor;
}
这可以在UI的每个部分重复多次(位置部分可以有颜色等)
我觉得域中不应该有特定于UI的值,但是我还能在哪里保存它呢
我还担心所有这些额外的领域会污染域名,所以我可以采取如下措施:
public class Event
{
public EventDates EventDates { get; private set; }
}
public class EventDates
{
private DateTime _startDate;
private DateTime _endDate;
private Color _dateColor;
}
但随后感觉开始/结束日期之类的内容不应该在子实体上,它们是实际事件的核心
有什么想法吗?我会在考虑可伸缩性和封装性的情况下这样做:
public class Event
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public EventDisplayOptions DisplayOptions { get; set; }
}
public class EventDisplayOptions
{
public Color DateBackgroundColor { get; set; }
public Color SomeOtherFieldColor {get; set; }
}
- 所有特定类型的活动,如生日或派对,是否都有相同的颜色
- 是否需要在同一事件中耦合日期和显示颜色
- 是否可以使用单独的配置来配置显示颜色,而不是在事件中明确指定
如果不同类型事件的颜色可以完全单独配置,那么我建议将显示颜色相关信息保存在单独的对象中。我喜欢这个答案,这是一种非常简洁的封装方式!