UML图
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 杨家毅软件架构
{
abstract class Burger
{
public abstract void GBurger();
}
abstract class Chicken
{
public abstract void GChicken();
}
abstract class Drink
{
public abstract void GDrink();
}
class KFCBurger : Burger
{
public override void GBurger()
{
Console.WriteLine("肯德基汉堡");
}
}
class MCDBurger : Burger
{
public override void GBurger()
{
Console.WriteLine("麦当劳汉堡");
}
}
class KFCChicken : Chicken
{
public override void GChicken()
{
Console.WriteLine("肯德基炸鸡");
}
}
class MCDChicken : Chicken
{
public override void GChicken()
{
Console.WriteLine("麦当劳炸鸡");
}
}
class KFCDrink : Drink
{
public override void GDrink()
{
Console.WriteLine("肯德基可乐");
}
}
class MCDDrink : Drink
{
public override void GDrink()
{
Console.WriteLine("麦当劳果汁");
}
}
interface AbstractFactory
{
Burger CreateBurger();
Chicken CreateChicken();
Drink CreateDrink();
}
class KFCFactory : AbstractFactory
{
public Burger CreateBurger()
{
return new KFCBurger();
}
public Chicken CreateChicken()
{
return new KFCChicken();
}
public Drink CreateDrink()
{
return new KFCDrink();
}
}
class MCDFactory : AbstractFactory
{
public Burger CreateBurger()
{
return new MCDBurger();
}
public Chicken CreateChicken()
{
return new MCDChicken();
}
public Drink CreateDrink()
{
return new MCDDrink();
}
}
class Meal
{
private Burger burger;
private Chicken chicken;
private Drink drink;
public Burger Burger
{
get { return burger; }
set { burger = value; }
}
public Chicken Chicken
{
get { return chicken; }
set { chicken = value; }
}
public Drink Drink
{
get { return drink; }
set { drink = value; }
}
public void CreateMeal()
{
burger.GBurger();
chicken.GChicken();
drink.GDrink();
}
}
class Program
{
static void Main(string[] args)
{
AbstractFactory factory = new KFCFactory();
Console.WriteLine("肯德基工厂\n");
Meal Meal1 = new Meal();
Meal1.Burger = factory.CreateBurger();
Meal1.Chicken = factory.CreateChicken();
Meal1.Drink = factory.CreateDrink();
Meal1.CreateMeal();
AbstractFactory factory2 = new MCDFactory();
Console.WriteLine("\n\n麦当劳工厂\n");
Meal Meal2 = new Meal();
Meal2.Burger = factory2.CreateBurger();
Meal2.Chicken = factory2.CreateChicken();
Meal2.Drink = factory2.CreateDrink();
Meal2.CreateMeal();
}
}
}
运行结果
原文:http://www.cnblogs.com/Yang-jy/p/5092757.html