软件开发模式之工厂模式模拟魔兽英雄创建(Darren)

很高兴又在每天的这个时候可以学习了,今天和大家分享一下我刚学习的设计模式工厂模式:吐舌头

今天这个事例使用游戏里面的思想去做的,希望大家有兴趣。

工厂模式定义:

定义一个创建对象的接口,让子类决定实例化哪一个类,工厂方法让一个类的方法延迟到了其子类。

简单工厂VS抽象工厂:

简单工厂最大的好处在于在工厂中加入了逻辑判断,根据客户端变化动态创建具体的类,对于客户端来说,去除了与具体产品的依赖。

工厂方法模式客户端需要决定实例化哪一个工厂来实现运算类,选择判断问题还是存在的,也就是说,工厂方法将简单工厂方法的逻辑判断移到了客户端,如果你想要增加功能,本来是改变工厂类的,现在变成客户端了。

不过有一点好处就是我会在后续将反射,通过反射我们就会体会到工厂模式的强大了。。。得意

现在我们来看看我用抽象工厂设计出来的一款创建游戏角色

先上两张图:

简单工厂

软件开发模式之工厂模式模拟魔兽英雄创建(Darren)_第1张图片

抽象工厂

软件开发模式之工厂模式模拟魔兽英雄创建(Darren)_第2张图片

怎么样,看晕了吧

对于第一个图我们也许很了解了,他就是我们所熟知的简单工厂设计模式,但是对于第二个图,大家是不是第一眼看上去就觉的很复杂呢,说实话这个图我看了3年了,开发项目也用到或多次,如果不是结合项目实战经验,看这个图还真的是晕。你比我幸运的是我今天可以在这给你讲,但我当时就是这样晕过来的。大笑然后今天我又让这张图让你在晕一下。。。。偷笑

不过今天我会尽自己最大的努力让各位博友看清这个模式:

先介绍我们的主题类:

----------------------------------------------------------------------------------------------------------

英雄类:

先创建一个抽象工厂接口:

-------------------------------------------------------------------------------------------


人族英雄:

--------------------------------------------------------------------------------------------------

/// <summary>
/// 具体的人族英雄类
/// </summary>
class RenZhuYingXiong:YinXiong
{
//用来区分不同族
string type = "人族英雄";
/// <summary>
/// 英雄被攻击
/// </summary>
public override void Tracked()
{
Console.WriteLine(type+"被攻击");
}
/// <summary>
/// 英雄加血
/// </summary>
public override void AddBlood()
{
Console.WriteLine(type+"加血");
}
/// <summary>
/// 英雄攻击怪物
/// </summary>
public override void Beat()
{
Console.WriteLine(type+"攻击怪物");
}
}

兽族英雄:

---------------------------------------------------------------------


精灵族英雄:

---------------------------------------------------------------------------------------


人族工厂:

-------------------------------------------------------------------------------------------------------


兽族工厂:

-------------------------------------------------------------------------------------------------------


精灵族工厂:

--------------------------------------------------------------------------------------------------------


客户端实现:

----------------------------------------------------------------------------------------------------------


运行以后效果如下:

软件开发模式之工厂模式模拟魔兽英雄创建(Darren)_第3张图片

哎呀呀,不容易啊,终于完了。。。。微笑

时间也不早了,洗洗睡了,感谢大家对Darren博客的支持。www.tianboo.net

你可能感兴趣的:(工厂模式)