/// <summary>
/// 抽象,而且是基于接口的
/// </summary>
interface IDatabase
{
string ProviderName { get; }
int ExecuteNonQuery();
}
class DatabaseBase : IDatabase
{
protected string providerName; // 封装内部对象
public virtual string ProviderName
{
get { return providerName; }
}
/// <summary>
/// 虚方法多态,同时采用内部封装的方法调用结果
/// </summary>
/// <returns></returns>
public virtual int ExecuteNonQuery()
{
return ProviderName.Length;
}
}
class OracleDatabase : DatabaseBase
{
public OracleDatabase() { providerName = "ORA"; }
}
class SqlDatabase : DatabaseBase
{
public SqlDatabase() { providerName = "SQL"; }
}
interface IDatabaseFactory
{
IDatabase Create(string provider);
}
class DatabaseFactory : IDatabaseFactory
{
public IDatabase Create(string provider)
{
switch (provider)
{
case "oracle":
return new OracleDatabase();
case "sqlServer":
return new SqlDatabase();
default:
throw new NotSupportedException("provider");
}
}
}
这个例子很简单,但设计是对的!
希望以后能好好分析一个大点的优秀的OOP项目