Abstract Factory Patterns

原创 2005年02月25日 17:07:00

using System;

// "AbstractFactory"

abstract class ContinentFactory
{
    // Methods
    abstract public Herbivore CreateHerbivore();
    abstract public Carnivore CreateCarnivore();
}

// "ConcreteFactory1"

class AfricaFactory : ContinentFactory
{
    // Methods
    override public Herbivore CreateHerbivore()
    {
        return new Wildebeest();
    }
    override public Carnivore CreateCarnivore()
    {
        return new Lion();
    }
}

// "ConcreteFactory2"

class AmericaFactory : ContinentFactory
{
    // Methods
    override public Herbivore CreateHerbivore()
    {
        return new Bison();
    }
    override public Carnivore CreateCarnivore()
    {
        return new Wolf();
    }
}

// "AbstractProductA"

abstract class Herbivore
{
    abstract public void Eat();
}

// "AbstractProductB"

abstract class Carnivore
{
    // Methods
    abstract public void Eat( Herbivore h );
}

// "ProductA1"

class Wildebeest : Herbivore
{
    override public void Eat()
    {
        Console.WriteLine(this + "eats Africa's Glass");
    }
}

// "ProductB1"

class Lion : Carnivore
{
    // Methods
    override public void Eat( Herbivore h )
    {
        // eat wildebeest
        Console.WriteLine( this + " eats " + h );
    }
}

// "ProductA2"

class Bison : Herbivore
{
    override public void Eat()
    {
        Console.WriteLine(this + "eats American's Glass");
    }
}

// "ProductB2"

class Wolf : Carnivore
{
    // Methods
    override public void Eat( Herbivore h )
    {
        // Eat bison
        Console.WriteLine( this + " eats " + h );
    }
}

// "Client"

class AnimalWorld
{
    // Fields
    private Herbivore herbivore;
    private Carnivore carnivore;

    // Constructors
    public AnimalWorld( ContinentFactory factory )
    {
        carnivore = factory.CreateCarnivore();
        herbivore = factory.CreateHerbivore();
    }

    // Methods
    public void RunFoodChain()
    {
        herbivore.Eat();
        carnivore.Eat( herbivore );
    }
}

/// <summary>
///  GameApp test class
/// </summary>

class GameApp
{
    public static void Main( string[] args )
    {
        // Create and run the Africa animal world
        ContinentFactory africa = new AfricaFactory();
        AnimalWorld world = new AnimalWorld( africa );
        world.RunFoodChain();

        // Create and run the America animal world
        ContinentFactory america = new AmericaFactory();
        world = new AnimalWorld( america );
        world.RunFoodChain();

        Console.Read();
    }
}

设计模式 - 抽象工厂模式(abstract factory pattern) 详解

抽象工厂模式(abstract factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/270916...
  • u012515223
  • u012515223
  • 2014年05月26日 16:52
  • 2173

Design Pattern - Abstract Factory Pattern

Abstract Factory patterns work around a super-factory which creates other factories. This factory is...
  • likaiwalkman
  • likaiwalkman
  • 2015年05月13日 12:09
  • 211

Factory Method vs Abstract Factory

Factory Method vs Abstract Factory
  • u010373266
  • u010373266
  • 2016年12月20日 16:26
  • 315

设计模式:Abstract Factory和Builder(比较区别,个人认为讲得很明白)

如果说 Factory和Prototype是同一个层次的话,那么Abstract Factory和Builder就是更高一级的层次。 1 Abstact Factory   在上面的Factory类型...
  • lovingprince
  • lovingprince
  • 2007年04月17日 10:59
  • 4224

Design Patterns -- Abstract Factory

The intent of Abstract Factory is to provide for the creation of a family of related, or dependent, ...
  • dr2tr
  • dr2tr
  • 2006年07月13日 11:03
  • 701

Design Patterns - Abstract Factory

IntentProvide an interface for creating families of related or dependent objects without specifying ...
  • AskingWood
  • AskingWood
  • 2007年05月12日 23:22
  • 497

Patterns in SOME –Abstract Factory

Code in C#: namespace AbstractFactory_DesignPattern{     using System;      // These classes could b...
  • despird
  • despird
  • 2007年03月01日 16:15
  • 394

深入浅出设计模式 ------ Abstract Factory(抽象工厂)

本文可以和笔者的深入浅出设计模式 ------ Factory Method(工厂方法)参照着看, 可以区分这三个工厂模式的不同。...
  • wenniuwuren
  • wenniuwuren
  • 2015年01月29日 02:25
  • 1726

设计模式——抽象工厂模式(Abstract Factory)

要想正确的理解设计模式,首先必须明确它是为了解决什么问题而提出来的。 抽象设计模式概念:         针对抽象工厂这个设计模式,我查找了不少资料,感觉只有涉及产品级别和产品族的才是理解了抽象工厂设...
  • u012909091
  • u012909091
  • 2014年08月02日 16:52
  • 3598

Java Design Patterns Abstract Factory

Abstract Factory OverviewAn abstract factory has sets of methods to make families of various objects...
  • ccssddnnbbookkee
  • ccssddnnbbookkee
  • 2015年05月26日 12:44
  • 369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Abstract Factory Patterns
举报原因:
原因补充:

(最多只允许输入30个字)