Design | example | source code
Using System;
Namespace Design_pattern
{
public class Computer
{
Private RAM RAM;
Private CPU CPU;
Public Computer (RAM ram,cpu CPU)
{
This. Ram =ram;
This. Cpu =cpu;
Console. WriteLine ("A Computer is composed!" +this. Ram + "" +this. CPU);
}
}
Public abstract class RAM
{
Public abstract Computer Composeacomputer (CPU CPU);
}
Public abstract class CPU
{
Public abstract Computer Composeacomputer (Ram RAM);
}
Public class Pcram:ram
{
public override Computer Composeacomputer (CPU CPU)
{
Console. WriteLine ("Pccomputer ...");
return new Computer (THIS,CPU);
}
}
public class Pccpu:cpu
{
public override Computer Composeacomputer (Ram RAM)
{
Console. WriteLine ("Pccomputer ...");
return new Computer (ram,this);
}
}
public class Macram:ram
{
public override Computer Composeacomputer (CPU CPU)
{
Console. WriteLine ("Maccomputer ...");
return new Computer (THIS,CPU);
}
}
public class Maccpu:cpu
{
public override Computer Composeacomputer (Ram RAM)
{
Console. WriteLine ("Maccomputer ...");
return new Computer (ram,this);
}
}
Public abstract class Abstractfactory
{
Public abstract RAM Createram ();
Public abstract CPU createcpu ();
}
public class Pcfactory:abstractfactory
{
public override RAM Createram ()
{
return new Pcram ();
}
public override CPU Createcpu ()
{
return new Pccpu ();
}
}
public class Macfactory:abstractfactory
{
public override RAM Createram ()
{
return new Macram ();
}
public override CPU Createcpu ()
{
return new Maccpu ();
}
}
Class Itmarket
{
Private RAM RAM;
Private CPU CPU;
Public Itmarket (Abstractfactory Factory)
{
This.ram =factory. Createram ();
This.cpu =factory. Createcpu ();
}
public void Run ()
{
Ram.composeacomputer (CPU);
Cpu.composeacomputer (RAM);
}
}
Class ClientApp
{
public static void Main (string[] args)
{
Console. WriteLine ("PC factory.....\n");
Abstractfactory pcfactory=new pcfactory ();
Itmarket itmarket=new Itmarket (pcfactory);
Itmarket. Run ();
Console. WriteLine ("MAC factory.....\n");
Abstractfactory macfactory=new macfactory ();
Itmarket =new Itmarket (macfactory);
Itmarket. Run ();
}
}
}