在下面的例程中,先定义一个抽象的Dishes类,然后具体实现它的2个子类,ChineseDishes和FranceDishes,在子类内,可以重写getDishes,规定做每种菜的手续和顺序。接着,定义一个抽象类DishFactory,它内部定义了一个抽象的方法factoryMethod,返回一个抽象的菜,重写它可以得到具体的菜。然后实现了2个具体的工厂,生产中国菜的工厂,重写了factoryMethod,返回一个中国菜,生产法国菜的工厂,重写factoryMethod,返回一个法国菜。
在具体的应用中,想做中国菜的时候,制作一个中国菜工厂并调用makeDishes()方法,想做法国菜的时候,制作一个法国菜的工厂并调用makeDishes()。
abstract class Dishes
{
public abstract string getDishes();
}
class ChineseDishes : Dishes
{
public override string getDishes()
{
return "Step1 -> Step2 -> Step3 --> Chinese Dishes.\n";
}
}
class FranceDishes : Dishes
{
public override string getDishes()
{
return "StepA -> StepB -> StepC --> France Dishes.\n";
}
}
abstract class DishFactory
{
public abstract Dishes factoryMethod();
public void makeDishes()
{
Dishes dishes = this.factoryMethod();
Console.Write(dishes.getDishes());
}
}
class ChineseDishFactory : DishFactory
{
public override Dishes factoryMethod()
{
return new ChineseDishes();
}
}
class FranceDishFactory : DishFactory
{
public override Dishes factoryMethod()
{
return new FranceDishes();
}
}
public static void Main()
{
DishFactory cdf = new ChineseDishFactory();
cdf.makeDishes();
DishFactory fdf = new FranceDishFactory();
fdf.makeDishes();
}
输出结果:
Step1 -> Step2 -> Step3 --> Chinese Dishes.
StepA -> StepB -> StepC --> France Dishes.
没有评论:
发表评论