定义对象设计模式的组合

时间:2015-01-22 02:00:57

标签: c# design-patterns

在研究互联网上的一些之后,我的头脑正在试图弄清楚哪种是最好的设计模式。我试图解决的问题是创建对象组合。

例如,我有对象组合,其中需要使用定义数量的Task对象创建Event对象:

事件1 - 任务1,任务2,任务3

事件2 - 任务2,任务3

理想情况下,我想要一种创建Event对象的简单方法,而不需要:

Event.Add(Task1)
Event.Add(Task2)
等等 理想情况下,我希望看到类似Event1.Add(Task1).Add(Task2).Add(Task3)。

我还需要能够将事件中的任务作为单独的对象自行检索。

任务需要重复使用。

2 个答案:

答案 0 :(得分:1)

Builder Pattern

怎么样?
public class Event {
    public Event(IEnumerable<Task> tasks) {...}
}

使用类似的构建器api

new EventBuilder().AddTask(....).AddTask(....).AddTask(....).Build();

答案 1 :(得分:0)

你可以这样做一点流利的foo ......

var e = new EventFoo().Add(new Task()).Add(new Task());

public class EventFoo
{
    public EventFoo()
    {
        Tasks = new List<Task>();
    }
    public List<Task> Tasks { get; private set; }

    public EventFoo Add(Task task)
    {
        Tasks.Add(task);
        return this;
    }
}

如果您要创建一组常规事件,您还可以将其创建移至工厂。