c#设计模式3抽象工厂模式(Abstract Factory)
2021-04-15 15:27
标签:style 制造 com summary oda nta tar col http 这里首先以一个生活中抽象工厂的例子来实现一个抽象工厂, 举例阐述抽象工厂模式: 中国装备:炸弹类,坦克类,来消灭邪恶国家。 炸弹类:导弹,核弹; 坦克类:越野车,主站坦克; 战略: 前期中国兵工厂生产:导弹,越野车,打击邪恶国家。 后期中国兵工厂生产:核弹,主站坦克,毁灭邪恶国家。 c#设计模式3抽象工厂模式(Abstract Factory) 标签:style 制造 com summary oda nta tar col http 原文地址:https://www.cnblogs.com/zuochanzi/p/8875262.html #region 坦克系列
abstract class Tank
{
abstract public void Go();
}
///
#region 炸弹系列
abstract class Bomb
{
abstract public void BaoZha();
}
///
// 备战
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();
}
}
#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 Program
{
static void Main(string[] args)
{
//大战前期
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();
}
}
然后再给出抽象工厂的定义和UML图来帮助大家更好地掌握抽象工厂模式,
同时大家在理解的时候,可以对照抽象工厂生活中例子的实现和它的定义来加深抽象工厂的UML图理解。
抽象工厂模式比其它工厂模式更加抽象,抽象工厂模式适用与多个抽象类的情况下,
通过工厂返回多个抽象类中你需要得到的具体子类实例。
假如中国对邪恶国家开战。
下一篇:C# Hashtable
文章标题:c#设计模式3抽象工厂模式(Abstract Factory)
文章链接:http://soscw.com/index.php/essay/75998.html