上一章我们讲了模板方法,并复习了一下c#的继承的一些语法。
今天讲的工厂方法其实和模板方法有一个共同的特点,就是,将建立对象实例都交给子类。
其实形象一点说,工厂模式就好比,mm告诉你她要吃汉堡包,那你要做的就是带她去KFC。
okay,我们就以这个为例子,看看用程序如何让mm吃到汉堡包。
首先我们肯定要有一个食物的类,这个类是个抽象类,因为我们不能确定mm除了吃汉堡包,还要不要吃鸡腿。
public abstract class Food
{
public abstract string Eated();
}
接着还要有一个汉堡包的继承类,当然也可以是鸡腿类。
public class Hamburger : Food
{
//你要带哪个mm去吃汉堡
private string mm;
public Hamburger(string mm)
{
this.mm = mm;
}
public override string Eated()
{
return "汉堡被" + mm + "吃了,并且" + mm + "很高兴";
}
}
然后还有一个快餐店noshery类,因为你不确定是要带mm去kfc还是去麦当劳,所以这个工厂类是个抽象类:
public abstract class Noshery
{
public abstract Food CreateFood(string mm);
}
假设你要带mm去吃KFC的汉堡包
public class KFC : Noshery
{
//你要为哪个mm买东西
public override Food CreateFood(string mm)
{
Food food = new Hamburger(mm);
return food;
}
}
工厂模型完成,你就可以带某个mm去吃KFC的汉堡包了。
假如张美眉说,要去KFC吃汉堡,你应该这么做:
//确定要去KFC
Noshery noshery = new KFC();
//给张美眉点了一个汉堡
Food food = noshery.CreateFood("张美眉");
//张美眉得到汉堡并吃下
System.Console.WriteLine(food.Eated());
System.Console.ReadLine();
输出:
汉堡被张美眉吃了,并且张美眉很高兴。
mm高兴了,你高兴了吗?