public abstract class Vehicle_abstratFactory
{
public string name; // Vehicle name public Vehicle_abstratFactory( string strName)
{
this.name = strName;
} public virtual void Go()
{
} }------------------------------------------------------ public class Bus : Vehicle_abstratFactory
{
public Bus( string name ) : base( name )
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public override void Go()
{
// TODO: 添加 Bus.Go 实现
Console.WriteLine("BUS " + name + " IS GOING...");
}
}------------------------------------- public class Taxi : Vehicle_abstratFactory
{
public Taxi( string name ) : base( name )
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public override void Go()
{
// TODO: 添加 Taxi.Go 实现
Console.WriteLine("TAXI " + name + " IS GOING...");
}
}
--------------------------------------------
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Driver driver = new Driver();
Taxi taxi = new Taxi( "LA0001" );
driver.GoOut( taxi ); Bus bus = new Bus("LA0008");
driver.GoOut( bus );
}
}----------------------------------
执行结果:
Driver Is Working ....
TAXI LA0001 IS GOING...
Driver Is Working ....
BUS LA0008 IS GOING...
{
public string name; // Vehicle name public Vehicle_abstratFactory( string strName)
{
this.name = strName;
} public virtual void Go()
{
} }------------------------------------------------------ public class Bus : Vehicle_abstratFactory
{
public Bus( string name ) : base( name )
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public override void Go()
{
// TODO: 添加 Bus.Go 实现
Console.WriteLine("BUS " + name + " IS GOING...");
}
}------------------------------------- public class Taxi : Vehicle_abstratFactory
{
public Taxi( string name ) : base( name )
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public override void Go()
{
// TODO: 添加 Taxi.Go 实现
Console.WriteLine("TAXI " + name + " IS GOING...");
}
}
--------------------------------------------
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Driver driver = new Driver();
Taxi taxi = new Taxi( "LA0001" );
driver.GoOut( taxi ); Bus bus = new Bus("LA0008");
driver.GoOut( bus );
}
}----------------------------------
执行结果:
Driver Is Working ....
TAXI LA0001 IS GOING...
Driver Is Working ....
BUS LA0008 IS GOING...
public Driver()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public void GoOut( Vehicle_abstratFactory vehicle )
{
Console.WriteLine("Driver Is Working ....");
vehicle.Go();
}
using System;namespace HFSoft.BLL
{
/// <summary>
/// 业务类适配器,所有业务类必须从此类派生
/// </summary>
public class BusinessAdapter:IBusiness
{
public BusinessAdapter()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private HFSoft.Data.IDataSession mDataUnit = null;
public HFSoft.Data.IDataSession DataUnit
{
get
{
// TODO: 添加 BuinessAdapter.DataUnit getter 实现
return mDataUnit;
}
set
{
// TODO: 添加 BuinessAdapter.DataUnit setter 实现
mDataUnit = value; }
}
#region 执行业务
/// <summary>
/// 派生类得写,在些方法中编写操作数据的语句
/// </summary>
protected virtual void OnExecute()
{
}
public void Execute()
{
if(this.IsSynchronized)//是否同步执行业务
SyncExecute();// TODO: 添加 BuinessAdapter.RunBusiness 实现
else
OnExecute();
}
#endregion
#region 业务同步
private bool mIsSynchronized = false;
/// <summary>
/// 描述业务执行时是否支持同步
/// </summary>
protected bool IsSynchronized
{
get
{
return mIsSynchronized;
}
set
{
mIsSynchronized = value;
}
}
private Type mMyType = null;
protected Type MyType
{
get
{
if(mMyType == null)
mMyType = this.GetType();
return mMyType;
}
}
private void SyncExecute()
{
lock(MyType)
{
OnExecute();
}
}
#endregion }
}
----------------------------------------------------
using System;namespace HFSoft.BLL
{
/// <summary>
/// 添加数据基础类
/// </summary>
public abstract class InsertBase:BusinessAdapter
{
public InsertBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private object mItem;
/// <summary>
/// 设置插入数据对象
/// </summary>
public object Item
{
get
{
return mItem;
}
set
{
mItem = value;
}
}
/// <summary>
/// 获取表名称,派生类重写
/// </summary>
protected abstract string TableName
{
get;
}
/// <summary>
/// 获取填写值的字段列表,派生类重写
/// </summary>
protected abstract string[] Fields
{
get;
}
/// <summary>
/// 检测测重复值条件
/// </summary>
protected abstract DAL.IFilter CheckFilter
{
get;
}
protected override void OnExecute()
{
DAL.CommandBase.Insert(this.DataUnit,Item,
TableName,CheckFilter,Fields);
base.OnExecute ();
} }
}
----------------------------
using System;namespace HFSoft.BLL
{
/// <summary>
/// 查询业务基础类
/// </summary>
public abstract class QueryBase:BusinessAdapter
{
public QueryBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private DAL.IFilter mFilter;
/// <summary>
/// 获取或设置查询条件
/// </summary>
public DAL.IFilter Filter
{
get
{
return mFilter;
}
set
{
mFilter = value;
}
}
private System.Data.DataSet mItems;
public System.Data.DataSet Items
{
get
{
return mItems;
}
set{
mItems = value;
}
}
}
/// <summary>
/// 查询表或视图基础类
/// </summary>
public abstract class QueryTableBase:QueryBase
{
protected abstract string TableName
{
get;
}
protected virtual string Fields
{
get
{
return "*";
}
}
private string mOrderBy;
public string OrderBy
{
get
{
return mOrderBy;
}
set
{
mOrderBy = value;
}
}
protected override void OnExecute()
{
System.Data.IDbCommand cmd = DAL.CommandBase.Query(this.DataUnit,TableName,Fields,Filter,OrderBy);
this.Items = this.DataUnit.ExecuteDataSet(cmd);
base.OnExecute ();
}
}
}
/// 执行相关业务类
/// </summary>
/// <param name="isTran">是否需要事务执行</param>
/// <param name="busines">业务类</param>
public void ExecBusiness(bool isTran,params IBusiness[] busines)
{
using(HFSoft.Data.IDataSession session = new HFSoft.Data.DataSession(Driver))
{
session.ConnectionString = ConnectionString;
session.Open();
if(isTran)
session.BeginTran();
try
{
foreach(IBusiness item in busines)
{
item.DataUnit = session;
item.Execute();
}
if(isTran)
session.Commit();
}
catch(Exception e_)
{
if(isTran)
session.RoolBack();
throw(e_);
}
finally
{
session.Close();
}
}
}