#region 炸弹系列
abstract class Bomb
{
abstract public void baozha();
}
/// <summary>
/// 导弹
/// </summary>
class daodanBomb :Bomb
{
public override void baozha()
{
Console.WriteLine("我是一颗中国造导弹,来轰炸不老实的小邪恶国家!");
}
}
/// <summary>
/// 核弹
/// </summary>
class hedanBomb : Bomb
{
public override void baozha()
{
Console.WriteLine("我是一颗中国造核弹,来轰炸不老实的小邪恶国家!");
}
}
#endregion
#region 坦克系列
abstract class Tank
{
abstract public void go();
}
/// <summary>
/// 越野车
/// </summary>
class yueyeTank : Tank
{
public override void go()
{
Console.WriteLine("我是一颗中国造越野车,来踏平不老实的小邪恶国家!");
}
}
/// <summary>
/// 主站坦克
/// </summary>
class zhuzhanTank : Tank
{
public override void go()
{
Console.WriteLine("我是一颗中国造主站坦克,来踏平不老实的小邪恶国家!");
}
}
#endregion工厂类代码
#region 中国兵工厂
abstract class chinaFactory
{
//装甲车制造车间
public abstract Tank CreateTank();
//炸弹知道车间
public abstract Bomb CreateBomb();
}
//兵工厂前期制造
class qianqiFactory : chinaFactory
{
public override Bomb CreateBomb()
{
//导弹
return new daodanBomb();
}
public override Tank CreateTank()
{
//越野车
return new yueyeTank();
}
}
//兵工厂后期制造
class houqiFactory : chinaFactory
{
public override Bomb CreateBomb()
{
//核弹
return new hedanBomb();
}
public override Tank CreateTank()
{
//主站坦克
return new zhuzhanTank();
}
}
#endregion客户端代码:(打仗)
// 备战
class Make
{
//装备
private Bomb bomb;
private Tank tank;
//制造加工
public Make(chinaFactory factory)
{
bomb = factory.CreateBomb();
tank = factory.CreateTank();
}
//开始打仗
public void warStar()
{
//炸弹类爆炸
bomb.baozha();
//战车类前进
tank.go();
}
}
public class start
{
public static void Main()
{
//大战前期
chinaFactory qianqiMake = new qianqiFactory();
Make qianqi = new Make(qianqiMake);
qianqi.warStar();
//点任意键,进行后期攻势!!
Console.ReadKey();
//大战后期
chinaFactory houqiMake = new houqiFactory();
Make houqi = new Make(houqiMake);
houqi.warStar();
Console.WriteLine("钓鱼岛是中国的,神圣不可侵犯!小邪恶国家,滚开!!");
Console.ReadLine();
}
}
/// 扮演抽象工厂的角色
/// 创建连接数据库时所需要的对象集合,
/// 这个对象集合包括有 DbConnection对象(这个是抽象产品类,如绝味例子中的YaBo类)、DbCommand类、DbDataAdapter类,针对不同的具体工厂都需要实现该抽象类中方法,
public abstract class DbProviderFactory
{
// 提供了创建具体产品的接口方法
protected DbProviderFactory();
public virtual DbCommand CreateCommand();
public virtual DbCommandBuilder CreateCommandBuilder();
public virtual DbConnection CreateConnection();
public virtual DbConnectionStringBuilder CreateConnectionStringBuilder();
public virtual DbDataAdapter CreateDataAdapter();
public virtual DbDataSourceEnumerator CreateDataSourceEnumerator();
public virtual DbParameter CreateParameter();
public virtual CodeAccessPermission CreatePermission(PermissionState state);
}
DbProviderFactory类是一个抽象工厂类,该类提供了创建数据库连接时所需要的对象集合的接口,实际创建的工作在其子类工厂中进行,微软使用的是SQL Server数据库,因此提供了连接SQL Server数据的具体工厂实现,具体代码可以用反编译工具查看,具体代码如下:
/// 扮演着具体工厂的角色,用来创建连接SQL Server数据所需要的对象
public sealed class SqlClientFactory : DbProviderFactory, IServiceProvider
{
// Fields
public static readonly SqlClientFactory Instance = new SqlClientFactory();
// 构造函数
private SqlClientFactory()
{
}
// 重写抽象工厂中的方法
public override DbCommand CreateCommand()
{ // 创建具体产品
return new SqlCommand();
}
public override DbCommandBuilder CreateCommandBuilder()
{
return new SqlCommandBuilder();
}
public override DbConnection CreateConnection()
{
return new SqlConnection();
}
public override DbConnectionStringBuilder CreateConnectionStringBuilder()
{
return new SqlConnectionStringBuilder();
}
public override DbDataAdapter CreateDataAdapter()
{
return new SqlDataAdapter();
}
public override DbDataSourceEnumerator CreateDataSourceEnumerator()
{
return SqlDataSourceEnumerator.Instance;
}
public override DbParameter CreateParameter()
{
return new SqlParameter();
}
public override CodeAccessPermission CreatePermission(PermissionState state)
{
return new SqlClientPermission(state);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有