public class Program
{
public static void Show ( )
{
{
Console. WriteLine ( "*************************" ) ;
IHelper helper = new MysqlHelper ( ) ;
helper. Query < Program > ( ) ;
helper. Delete < Program > ( ) ;
helper. Add < Program > ( ) ;
helper. Update < Program > ( ) ;
}
{
Console. WriteLine ( "*************************" ) ;
IHelper helper = new SqlserverHelper ( ) ;
helper. Query < Program > ( ) ;
helper. Delete < Program > ( ) ;
helper. Add < Program > ( ) ;
helper. Update < Program > ( ) ;
}
{
Console. WriteLine ( "*************************" ) ;
IHelper helper = new OracleHelper ( ) ;
helper. Query < Program > ( ) ;
helper. Delete < Program > ( ) ;
helper. Add < Program > ( ) ;
helper. Update < Program > ( ) ;
}
{
Console. WriteLine ( "*************************" ) ;
IHelper helper = new RedisHelperInherit ( ) ;
helper. Query < Program > ( ) ;
helper. Delete < Program > ( ) ;
helper. Add < Program > ( ) ;
helper. Update < Program > ( ) ;
}
{
Console. WriteLine ( "*************************" ) ;
IHelper helper = new RedisHelperObject ( ) ;
helper. Query < Program > ( ) ;
helper. Delete < Program > ( ) ;
helper. Add < Program > ( ) ;
helper. Update < Program > ( ) ;
}
}
}
public interface IHelper
{
void Add < T > ( ) ;
void Delete < T > ( ) ;
void Update < T > ( ) ;
void Query < T > ( ) ;
}
public class MysqlHelper : IHelper
{
public void Add < T > ( )
{
Console. WriteLine ( "This is {0} Add" , this . GetType ( ) . Name) ;
}
public void Delete < T > ( )
{
Console. WriteLine ( "This is {0} Delete" , this . GetType ( ) . Name) ;
}
public void Update < T > ( )
{
Console. WriteLine ( "This is {0} Update" , this . GetType ( ) . Name) ;
}
public void Query < T > ( )
{
Console. WriteLine ( "This is {0} Query" , this . GetType ( ) . Name) ;
}
}
public class RedisHelper
{
public RedisHelper ( )
{
Console. WriteLine ( $"构造RedisHelper" ) ;
}
public void AddRedis < T > ( )
{
Console. WriteLine ( "This is {0} Add" , this . GetType ( ) . Name) ;
}
public void DeleteRedis < T > ( )
{
Console. WriteLine ( "This is {0} Delete" , this . GetType ( ) . Name) ;
}
public void UpdateRedis < T > ( )
{
Console. WriteLine ( "This is {0} Update" , this . GetType ( ) . Name) ;
}
public void QueryRedis < T > ( )
{
Console. WriteLine ( "This is {0} Query" , this . GetType ( ) . Name) ;
}
}
public class RedisHelperInherit : RedisHelper , IHelper
{
public RedisHelperInherit ( )
{
Console. WriteLine ( $"构造RedisHelperInherit" ) ;
}
public void Add < T > ( )
{
base . AddRedis < T > ( ) ;
}
public void Delete < T > ( )
{
base . DeleteRedis < T > ( ) ;
}
public void Update < T > ( )
{
base . UpdateRedis < T > ( ) ;
}
public void Query < T > ( )
{
base . QueryRedis < T > ( ) ;
}
}
public class RedisHelperObject : IHelper
{
private RedisHelper _RedisHelper = new RedisHelper ( ) ;
public RedisHelperObject ( )
{
Console. WriteLine ( $"构造RedisHelperInherit" ) ;
}
public void Add < T > ( )
{
this . _RedisHelper. AddRedis < T > ( ) ;
}
public void Delete < T > ( )
{
this . _RedisHelper. DeleteRedis < T > ( ) ;
}
public void Update < T > ( )
{
this . _RedisHelper. UpdateRedis < T > ( ) ;
}
public void Query < T > ( )
{
this . _RedisHelper. QueryRedis < T > ( ) ;
}
}