【设计模式】之 Abstract Factory 抽象工厂
2012-03-02 16:05
127 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DesignFactory.AbstractFactory { /// <summary> /// Herbivore: 草食动物 /// Carnivore: 食肉动物 /// Bison : 美洲或者欧洲的野牛 /// </summary> abstract class ContinentFactory { abstract public Herbivore CreateHerbivore(); abstract public Carnivore CreateCarnivore(); } class AfricaFactory : ContinentFactory { public override Herbivore CreateHerbivore() { return new Wildebeest(); } public override Carnivore CreateCarnivore() { return new Lion(); } } class AmericalFactory : ContinentFactory { public override Herbivore CreateHerbivore() { return new Bison(); } public override Carnivore CreateCarnivore() { return new Wolf(); } } abstract class Herbivore { } abstract class Carnivore { abstract public void Eat(Herbivore h); } class Wildebeest : Herbivore { } class Lion : Carnivore { public override void Eat(Herbivore h) { Console.WriteLine(this + "eats" + h); } } class Bison : Herbivore { } class Wolf : Carnivore { public override void Eat(Herbivore h) { Console.WriteLine(this + "eats" + h); } } class AnimalWorld { private Herbivore herbivore; private Carnivore carnivore; public AnimalWorld(ContinentFactory factory) { carnivore = factory.CreateCarnivore(); herbivore = factory.CreateHerbivore(); } public void RunFoodChain() { carnivore.Eat(herbivore); } } class GameApp { public static void Main(string[] args) { ContinentFactory africa = new AfricaFactory(); AnimalWorld world = new AnimalWorld(africa); world.RunFoodChain(); ContinentFactory america = new AmericalFactory(); world = new AnimalWorld(america); world.RunFoodChain(); } } }
相关文章推荐
- 设计模式之——抽象工厂设计模式
- VB.net设计模式之工厂方法,抽象工厂方法(Factory Method Pattern,Abstract Factory Method Pattern)
- 设计模式之工厂方法和抽象工厂
- java设计模式之工厂模式(工厂方法、抽象工厂)
- 设计模式-3.1 Abstract Factory(抽象工厂)--对象创建型模式
- .C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 学习设计模式之禅——抽象工厂方法模式
- 设计模式——抽象工厂(Abstract Factory Pattern)
- iOS 21种设计模式之抽象工厂(Abstract Factory)
- 设计模式 抽象工厂
- php 设计模式(抽象工厂)
- 设计模式之简单工厂/工厂方法/抽象工厂
- 设计模式——抽象工厂(Abstract Factory)
- java设计模式——工厂方法与抽象工厂方法
- 设计模式学习-抽象工厂(Abstract Factory)
- 创建型设计模式之抽象工厂方法模式
- JAVA设计模式——抽象工厂
- 设计模式-抽象工厂(Abstract Factory)
- 【设计模式】创建型模式之抽象工厂Abstract Factory
- 23种设计模式之抽象工厂(Abstract Factory)