Решения на трета задача от лаба за Design Patterns 19.08.2015
Здравейте колеги, може ли да дадете идеи за кода на DomBuildera(3та задача от лаба)?
Здравейте колеги, може ли да дадете идеи за кода на DomBuildera(3та задача от лаба)?
Ето ти Main-a: добавил съм ред Console.WriteLine(html.Display(0)), за да ти се визуализира output-a на конзолата.
namespace DOMBuilder
{
using System;
using System.IO;
using Composite.Element;
public class Program
{
public static void Main()
{
Element html = new Element("html",
new Element("head"),
new Element("body",
new Element("section",
new Element("h2"),
new Element("p"),
new Element("span")),
new Element("footer")));
Console.WriteLine(html.Display(0));
File.WriteAllText("index.html", html.Display(0));
}
}
}
Thanks колега, ето го и моето решение:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
namespace DOMBuilder
{
public class Element
{
private string type;
private ICollection<Element> children;
public Element(string type, params Element[] children)
{
this.Type = type;
this.children = new List<Element>();
for (int i = 0; i < children.Length; i++)
{
this.children.Add(children[i]);
}
}
public string Type
{
get { return this.type; }
set { this.type = value; }
}
public void Add(Element element)
{
this.children.Add(element);
}
public void Remove(Element element)
{
if (this.children.Contains(element))
{
this.children.Remove(element);
}
else
{
throw new ArgumentNullException("The element doesn't exist in the children collection.");
}
}
public string Display(int deapth = 0)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Format("{0}<{1}>", new string(' ', deapth), this.Type.ToString()));
if (this.children.Count > 0)
{
foreach (var element in this.children)
{
sb.AppendLine(element.Display(deapth + 1));
}
}
sb.Append(string.Format("{0}</{1}>", new string(' ', deapth), this.Type.ToString()));
return sb.ToString();
}
}
}