Composite模式(组合模式)
这个模式是很常见的一种模式,一般来讲这个模式主要用于将对象的组合,比如:树状目录的组合,一般我们一个聚合节点组合了多个其他的子节点,而子节点同时也可以作为一个聚合节点,这样层层嵌套,组合成为树状目录。那么Composite模式就是来解决这类组合的问题的。
先看一下类图:
很明显,IComponent作为Component和Composite的公用接口,他们共同拥有一样的行为,通俗的说就是,单独的Component可以作为一个组件,一个Composite也能作为一个组件。
注意:这里用接口明显不如抽象类好。我们知道,接口是代表相似的功能,抽象类是说明同属一个东西。这里他们都是组件,而不是他们都具有Add,Remove的功能(Component就没有实现Add这个功能)。
下面我们详细来看IComponent这个接口:
public interface IComponent<T>
{
T Name { get; set; }
void Add(IComponent<T> item);
IComponent<T> Remove(T item);
IComponent<T> Find(T item);
void Display();
}
{
T Name { get; set; }
void Add(IComponent<T> item);
IComponent<T> Remove(T item);
IComponent<T> Find(T item);
void Display();
}