Skip to content

Instantly share code, notes, and snippets.

@iwouldnot
Last active October 24, 2017 03:20
Show Gist options
  • Save iwouldnot/4c727e55fa18e8fafaf92f6ca41e4480 to your computer and use it in GitHub Desktop.
Save iwouldnot/4c727e55fa18e8fafaf92f6ca41e4480 to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace constr_PO_laba8
{
abstract class AbstractFactory
{
public abstract AbstractProductA CreateProductA();
public abstract AbstractProductB CreateProductB();
}
class ConcreteFactory1 : AbstractFactory
{
public override AbstractProductA CreateProductA()
{
return new ProductA1();
}
public override AbstractProductB CreateProductB()
{
return new ProductB1();
}
}
abstract class AbstractProductA
{ }
abstract class AbstractProductB
{ }
class ConcreteFactory2 : AbstractFactory
{
public override AbstractProductA CreateProductA()
{
return new ProductA2();
}
public override AbstractProductB CreateProductB()
{
return new ProductB2();
}
}
class ProductA1 : AbstractProductA
{
public ProductA1()
{
Console.WriteLine("A1 created");
}
}
class ProductB1 : AbstractProductB
{
public ProductB1()
{
Console.WriteLine("B1 created");
}
}
class ProductA2 : AbstractProductA
{
public ProductA2()
{
Console.WriteLine("A2 created");
}
}
class ProductB2 : AbstractProductB
{
public ProductB2()
{
Console.WriteLine("B2 created");
}
}
class Client
{
private AbstractProductA abstractProductA;
private AbstractProductB abstractProductB;
public Client(AbstractFactory factory)
{
abstractProductA = factory.CreateProductA();
abstractProductB = factory.CreateProductB();
}
}
class Program
{
static void Main(string[] args)
{
ConcreteFactory1 factory1 = new ConcreteFactory1();
Client client1 = new Client(factory1);
Client client2 = new Client(factory1);
Console.WriteLine("________________________________\n");
ConcreteFactory2 factory2 = new ConcreteFactory2();
Client client3 = new Client(factory2);
Client client4 = new Client(factory2);
Console.ReadLine();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment