Composite模式(组合模式)-创新互联
模式简介
网站标题:Composite模式(组合模式)-创新互联
网站URL:http://scjbc.cn/article/pjohi.html
组合模式多用于树形菜单,文件、文件夹之类的管理,把一组类似的对象看作一个对象,例如文件夹可以包含文件夹和文件,但是把文件夹看作一个对象。
为蒙城等地区用户提供了全套网页设计制作服务,及蒙城网站建设行业解决方案。主营业务为网站建设、成都网站建设、蒙城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!模式UML图代码示例(C#)//叶子节点,继承Node类
class LeafNode : Node
{
public LeafNode(string p_name) : base(p_name) { }
}
//分支节点,继承Node类
class BranchNode : Node
{
public ListchildNodes = new List();
public BranchNode(string p_name) : base(p_name) { }
public void Add(Node p_node)
{
childNodes.Add(p_node);
}
public void Remove(Node p_node)
{
childNodes.Remove(p_node);
}
}
//节点抽象类,所有节点继承该类
public abstract class Node
{
public string name;
public string content;
public Node(string p_name)
{
name = p_name;
}
}
//测试代码
public void Test()
{
BranchNode root = new BranchNode("Root");
BranchNode node1 = new BranchNode("Node1");
BranchNode node2 = new BranchNode("Node2");
BranchNode node3 = new BranchNode("Node3");
LeafNode node4 = new LeafNode("Node4");
LeafNode node5 = new LeafNode("Node5");
LeafNode node6 = new LeafNode("Node6");
root.Add(node1);
root.Add(node2);
node1.Add(node4);
node2.Add(node3);
node3.Add(node5);
node3.Add(node6);
Draw(root, 1);
}
private void Draw(Node p_node, int p_depth)
{
string v_str = "";
for (int i = 0; i< p_depth; i++) v_str += "|";
Console.WriteLine(v_str + p_node.name);
if (p_node is BranchNode)
{
foreach (Node n in ((BranchNode)p_node).childNodes)
{
Draw(n, p_depth + 1);
}
}
}
代码解说我们这里体现在BranchNode类中的childNodes属性,组合模式在于把拥有子节点的BranchNode和没有子节点的LeafNode都看作一个单独的对象,都是Node。LeafNode就类似于文件,而BranchNode就类似于文件夹,文件中不能再包含文件或文件夹,但是文件夹下可以包含文件夹和文件。
如果这篇文章对你有帮助,请给作者点个赞吧!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站标题:Composite模式(组合模式)-创新互联
网站URL:http://scjbc.cn/article/pjohi.html