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,会不会有效率问题?
相比在一个循环中做完所有的动作,哪个效率高一些。
这样的效率问题需不需要考虑?
除了
Decorator1,
Decorator2
这两个类的构造函数写错了之外。其他没发现什么问题。类似这样的Decorator模式的代码,网上一找一大堆。出言不逊,不要把无知当个性。
我只不过想问这样一个问题:
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);
}
效率上会有多大的差别,实际项目中需要考虑这样的问题么?如此简单而已,我只不过把我的问题由来说了一下而已。