标签:class blog ext get 数据 string
链式生产环节装配:
/// <summary>
/// 数据,它会反复接收工厂里各个环节的加工
/// </summary>
public class DataStream
{
public string Status { get; set; }
}
/// <summary>
/// 节点抽象类,模拟各种机器
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class MechineNode<T> : IMechine<T>
where T : DataStream, new()
{
public IMechine<T> Next { get; set; }
public T Data { get; set; }
public abstract IMechine<T> Execute();
public IMechine<T> Append(IMechine<T> next)
{
this.Next = next;
next.Data = this.Data;
return next;
}
}
/// <summary>
/// 机器节点1
/// </summary>
/// <typeparam name="T"></typeparam>
public sealed class Mechine1<T> : MechineNode<T>
where T : DataStream, new()
{
public override IMechine<T> Execute()
{
this.Data.Status = "updated by mechine 1";
return this;
}
}
/// <summary>
/// 机器节点2
/// </summary>
/// <typeparam name="T"></typeparam>
public sealed class Mechine2<T> : MechineNode<T>
where T : DataStream, new()
{
public override IMechine<T> Execute()
{
this.Data.Status += ",updated by mechine 2";
return this;
}
}
下面是应用:
DataStream data = new DataStream();
IMechine<DataStream> mnode = new Mechine1<DataStream>();
mnode.Data = data;
mnode.Execute()
.Append(new Mechine2<DataStream>()).Execute()
//.Append(new Mechine2<DataStream>()).Execute() //<---通过动态链式环节,自由组合各台机器的装配顺序
;
标签:class blog ext get 数据 string
原文地址:http://www.cnblogs.com/kvspas/p/3804340.html