Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Design Patterns via C#.pdf
Скачиваний:
154
Добавлен:
17.03.2016
Размер:
13.25 Mб
Скачать

40

Структура паттерна на языке UML

См. Пример к главе: \001_AbstractFactory\001_AbstractFactory

41

Структура паттерна на языке C#

 

 

 

class Client

class Program

 

 

{

 

 

AbstractProductA apa;

{

 

 

 

 

AbstractProductB apb;

public static void Main()

 

{

 

 

public Client(AbstractFactory af)

Client client = null;

{

 

 

 

client

=

new Client(new Factory1());

apa = af.CreateProductA();

apb = af.CreateProductB();

client.Run();

}

 

 

 

client

=

new Client(new Factory2());

public void Run()

client.Run();

{

}

 

 

 

 

apb.Interact(apa);

}

 

 

 

 

}

 

 

 

 

 

 

}

abstract class AbstractFactory

 

{

 

 

public abstract AbstractProductA CreateProductA();

 

public abstract AbstractProductB CreateProductB();

 

}

 

 

class Factory1 : AbstractFactory

class Factory2 : AbstractFactory

 

{

{

 

public override AbstractProductA CreateProductA()

public override AbstractProductA CreateProductA()

{

{

 

return new ProductA1();

return new ProductA2();

 

}

}

 

public override AbstractProductB CreateProductB()

public override AbstractProductB CreateProductB()

{

{

 

return new ProductB1();

return new ProductB2();

 

}

}

 

}

}

 

abstract class AbstractProductA

 

{

 

 

}

 

 

class ProductA1 : AbstractProductA

class ProductA2 : AbstractProductA

 

{

{

 

}

}

 

abstract class AbstractProductB

 

 

{

 

 

public abstract void Interact(AbstractProductA apa);

 

}

 

 

class ProductB1 : AbstractProductB

class ProductB2 : AbstractProductB

 

{

{

 

public override void Interact(AbstractProductA apa)

public override void Interact(AbstractProductA apa)

{

{

 

Console.WriteLine(this + " interacts with " + apa);

Console.WriteLine(this + " interacts with

" + apa);

}

}

 

}

}

 

См. Пример к главе: \001_AbstractFactory\001_AbstractFactory

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]