请教各位:
我怎么样把这个XML文件结构用组合模式(Composite Pattern)来表示呢?
<?xml version="1.0" encoding="utf-8" ?>
<ReportTemplate CustomerName="normal" Version="0.92">
<Reports>
<Report FontName="Tahoma" FontSize="12" ReportName="Account" Width="3.9" LeftSpacing="0.1" TopSpacing="0.1" EndOfDayFlag="false">
<Header FontSize="0" FillColor="DarkGray">
<Lines>
<HeaderTextLine FontSize="16" LineTitle="REPORTNAME" TitleWidth="0" DataSource="Account" Format="{0}" />
<HeaderTextLine FontSize="12" LineTitle="Store Name:" TitleWidth="0" DataSource="StoreName" Format="{0}" />
</Lines>
</Header>
<Bodys>
<ReportBody FontSize="0" HeadingHeight="0.25" HeadingFillColor="LightGray" HeadingLines="2">
<ColumnHeadings>
<ColumnHeading FontSize="0" Height="0.25" Width="0.8" FirstLineName="Date" SecondLineName="" HoriAlignment="Left" />
<ColumnHeading FontSize="0" Height="0.25" Width="1" FirstLineName="Transaction Type" SecondLineName=""
HoriAlignment="Left" />
</ColumnHeadings>
<DataColumns>
<Column FontSize="0" Height="0" Width="0.8" DataSource="TransDate" Format="{0:d}" SummaryType="None"
HoriAlignment="Left" />
<Column FontSize="0" Height="0" Width="1" DataSource="EntryType" Format="{0}" SummaryType="None"
HoriAlignment="Left" />
</DataColumns>
</ReportBody>
</Bodys>
</Report>
.........
</ReportTemplate>
我怎么样把这个XML文件结构用组合模式(Composite Pattern)来表示呢?
<?xml version="1.0" encoding="utf-8" ?>
<ReportTemplate CustomerName="normal" Version="0.92">
<Reports>
<Report FontName="Tahoma" FontSize="12" ReportName="Account" Width="3.9" LeftSpacing="0.1" TopSpacing="0.1" EndOfDayFlag="false">
<Header FontSize="0" FillColor="DarkGray">
<Lines>
<HeaderTextLine FontSize="16" LineTitle="REPORTNAME" TitleWidth="0" DataSource="Account" Format="{0}" />
<HeaderTextLine FontSize="12" LineTitle="Store Name:" TitleWidth="0" DataSource="StoreName" Format="{0}" />
</Lines>
</Header>
<Bodys>
<ReportBody FontSize="0" HeadingHeight="0.25" HeadingFillColor="LightGray" HeadingLines="2">
<ColumnHeadings>
<ColumnHeading FontSize="0" Height="0.25" Width="0.8" FirstLineName="Date" SecondLineName="" HoriAlignment="Left" />
<ColumnHeading FontSize="0" Height="0.25" Width="1" FirstLineName="Transaction Type" SecondLineName=""
HoriAlignment="Left" />
</ColumnHeadings>
<DataColumns>
<Column FontSize="0" Height="0" Width="0.8" DataSource="TransDate" Format="{0:d}" SummaryType="None"
HoriAlignment="Left" />
<Column FontSize="0" Height="0" Width="1" DataSource="EntryType" Format="{0}" SummaryType="None"
HoriAlignment="Left" />
</DataColumns>
</ReportBody>
</Bodys>
</Report>
.........
</ReportTemplate>
子类为 XMLNode 和 XMLProperty
XMLNode 可以组合(包含)XMLNode 或 XMLProperty, XMLProperty 不可以组合其他对象。
我只是为了练习,我还想问一下,我的XML文件是报表配置文件,在真正的程序中有必要把这个配置文件实现组合模式(Composite Pattern)吗?有没有好处呢?
2 但是从业务的角度来讲。你这个Xml表达的是报表模板。从你的XMl中,我没有看到一个报表可以包含子报表集合。所以不是一棵报表树。没有必要用到什么组合模式。有一点要说的:数据库,XML这些都只是数据存储与交换的一种方式。它们不应该影响到你的类设计。你并不能从它们之中能看到类设计的影子。而且不能被它们所制约。有没有好处呢?组合模式的好处很多。比如你的有报表类,里面有很多子报表。那么你的客户应用程序就可以用一致的方式来调用你的报表类的方法。比如Render方法。这种贴这么人气这么低。唉。NETER怎么对这些都不关心呢????这可是搞软件开发最要追求的东东哦!
但是我的XML中有对象集合的概念阿!可以有多个reports,
比如,有header有lines
可以有多个bodys,
然后还可以有ColumnHeadings, 有DataColumns我想统一处理集合对象,应该就是组合模式的应该做的事情吧!但是,的确没有递归的概念,请问组合模式一定要有递归才能用吗?你说的
不知道你看过李建忠老师的设计模式视频,如果没有到这里:
http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/CsharpOOD.aspx
你应该看过吧!如果没有,就当是我谢谢你了。
以前我的确忽略了组合模式的递归,不过我想你明白了我的意思,我也明白你的意思了。
呵呵!分是你的了。