* ثبت نام
: درج اطلاعات خود در وبلاگ www.uml.blogfa.com و سايت www.uml.ir و
شروع همکاري با ما
|
KeyType
آموزش تايپ فارسي و انگليسي تنها بعد از 6 ساعت با چشماني بسته
www.KeyType.ir
|
SysAdviser
گروه مشاوران فنآوري اطلاعات مشاوره، آموزش ، تحليل سيستم
www.SysAdviser.com
|
سمينار آموزشي BPM
برگزاري دوره هاي آموزشي BPM
BPM , BPMN , BPMS , BPR
BPM Tutorial
|
Definition
|

|
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

participants
The classes and/or objects participating in this pattern are:
- AbstractFactory (ContinentFactory)
- declares an interface for operations that create abstract products
- ConcreteFactory (AfricaFactory, AmericaFactory)
- implements the operations to create concrete product objects
- AbstractProduct (Herbivore, Carnivore)
- declares an interface for a type of product object
- Product (Wildebeest, Lion, Bison, Wolf)
- defines a product object to be created by the corresponding concrete factory
- implements the AbstractProduct interface
- Client (AnimalWorld)
- uses interfaces declared by AbstractFactory and AbstractProduct classes
sample code in C#
This real-world code demonstrates the creation of different animal worlds for a computer game using different factories. Although the animals created by the Continent factories are different, the interactions among the animals remain the same.
|
// Abstract Factory pattern -- Real World example |
using System;
namespace DoFactory.GangOfFour.Abstract.RealWorld { // MainApp test application
class MainApp { public static void Main() { // 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();
// Wait for user input Console.Read(); } }
// "AbstractFactory"
abstract class ContinentFactory { public abstract Herbivore CreateHerbivore(); public abstract Carnivore CreateCarnivore(); }
// "ConcreteFactory1"
class AfricaFactory : ContinentFactory { public override Herbivore CreateHerbivore() { return new Wildebeest(); } public override Carnivore CreateCarnivore() { return new Lion(); } }
// "ConcreteFactory2"
class AmericaFactory : ContinentFactory { public override Herbivore CreateHerbivore() { return new Bison(); } public override Carnivore CreateCarnivore() { return new Wolf(); } }
// "AbstractProductA"
abstract class Herbivore { }
// "AbstractProductB"
abstract class Carnivore { public abstract void Eat(Herbivore h); }
// "ProductA1"
class Wildebeest : Herbivore { }
// "ProductB1"
class Lion : Carnivore { public override void Eat(Herbivore h) { // Eat Wildebeest Console.WriteLine(this.GetType().Name + " eats " + h.GetType().Name); } }
// "ProductA2"
class Bison : Herbivore { }
// "ProductB2"
class Wolf : Carnivore { public override void Eat(Herbivore h) { // Eat Bison Console.WriteLine(this.GetType().Name + " eats " + h.GetType().Name); } }
// "Client"
class AnimalWorld { private Herbivore herbivore; private Carnivore carnivore;
// Constructor public AnimalWorld(ContinentFactory factory) { carnivore = factory.CreateCarnivore(); herbivore = factory.CreateHerbivore(); }
public void RunFoodChain() { carnivore.Eat(herbivore); } } } |
Output
|
Lion eats Wildebeest Wolf eats Bison | |
|
+
نوشته شده در
85/08/17ساعت 23:12 توسط مهدي جلالي
|