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...

解决方案 »

  1.   

    忘了粘贴一个类:
    public Driver()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } public void GoOut( Vehicle_abstratFactory vehicle )
    {
    Console.WriteLine("Driver Is Working ....");
    vehicle.Go();
    }
      

  2.   

    我也跟帖发几个在项目中运用的几个吧
    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 ();
    }
    }
    }
      

  3.   

    /// <summary>
    /// 执行相关业务类
    /// </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();
    }

    }
    }
      

  4.   

    既然是factory,你的factory都生产什么了?如果不生产东西,那最多叫演示继承和多态