关于使用Decorator模式的效率问题。

zengjd 2011-09-22 11:45:59

public interface IDataFetch()
{
DataTable FetchData();
}

public class Decorator : IDataFetch
{
protected IDataFetch _decoratee = null;

public Decorator(IDataFetch decoratee)
{
_decoratee = decoratee;
}

public virtual DataTable FetchData()
{
if (this._decoratee == null)
throw new Exception("");

return _decoratee.FetchData(interest);
}
}

public class theFetch : IDataFetch
{
public DataTable FetchData()
{
tbl = ....;
return tbl;
}

}

public Decorator1: Decorator
{
public Action1( IDataFetch dee) :base(dee){}
public override DataTable FetchData()
{
DataTable tbl = base.FetchData();
foreach ( DataRow row in tbl.rows)
{
//execute action1 decorator
...
}
}
}

public Decorator2: Decorator
{
public Action2( IDataFetch dee) :base(dee){}
public override DataTable FetchData()
{
DataTable tbl = base.FetchData();
foreach ( DataRow row in tbl.rows)
{
//execute action2 decorator
...
}
}
}


上面代码中,每个Decorator都要循环一遍DataTable,进行Decorator,会不会有效率问题?
相比在一个循环中做完所有的动作,哪个效率高一些。
这样的效率问题需不需要考虑?
...全文
59 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengjd 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sp1234 的回复:]
你根本不解释所谓DataTable想干什么用,就问“每个Decorator都要循环一遍DataTable”这有意义吗?

你修水管子的时候,问人你的同事“我穿西服应该扣几颗扣子”有什么意义吗?
[/Quote]

我只不过想问这样一个问题:
foreach( DataRow row in tbl.rows)
{
action1(row);
action2(row);
action3(row);
}

foreach( DataRow row in tbl.rows)
{
action1(row);
}
foreach( DataRow row in tbl.rows)
{
action2(row);
}
foreach( DataRow row in tbl.rows)
{
action3(row);
}
效率上会有多大的差别,实际项目中需要考虑这样的问题么?

如此简单而已,我只不过把我的问题由来说了一下而已。
  • 打赏
  • 举报
回复
你根本不解释所谓DataTable想干什么用,就问“每个Decorator都要循环一遍DataTable”这有意义吗?

你修水管子的时候,问人你的同事“我穿西服应该扣几颗扣子”有什么意义吗?
zengjd 2011-09-22
  • 打赏
  • 举报
回复
我纳闷了,是不是带几颗星星的都太自以为是了,目中无人了?
本来想讨论点问题,大中午的惹一肚子气。!
zengjd 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sp1234 的回复:]
另外你的代码中,无数的语法错误,甚至连class关键字都没有,甚至都会出现莫名其妙的 actionX():base{} 这种语法,那么我建议你写代码时先注重大量实用经验积累,然后再纠缠什么时髦模式概念。
[/Quote]

你觉得这么较真有意思么?这只不过是一段伪代码而已。我拿记事本随便写出来的。
鸡蛋里挑骨头很有意思么?
  • 打赏
  • 举报
回复
另外你的代码中,无数的语法错误,甚至连class关键字都没有,甚至都会出现莫名其妙的 actionX():base{} 这种语法,那么我建议你写代码时先注重大量实用经验积累,然后再纠缠什么时髦模式概念。
zengjd 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sp1234 的回复:]
看不懂lz的代码。lz还不如研究“回字有几种写法”,好像也比这个代码更清楚一些。
[/Quote]

除了
Decorator1,
Decorator2
这两个类的构造函数写错了之外。其他没发现什么问题。

类似这样的Decorator模式的代码,网上一找一大堆。

出言不逊,不要把无知当个性。
  • 打赏
  • 举报
回复
看不懂lz的代码。lz还不如研究“回字有几种写法”,好像也比这个代码更清楚一些。
ycproc 2011-09-22
  • 打赏
  • 举报
回复
效率确实会是一个问题
模式不要太过于注重
根据实际情况
qin_0 2011-09-22
  • 打赏
  • 举报
回复
沙发。哈哈。帮楼主顶贴!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧