public static void Main()
BallAbstractFactory coco=new COCOComapny();
Console.WriteLine("Company: " + coco.GetCompnayName());
Console.WriteLine("Swing: " + coco.GetTenisBall().swing());
Console.WriteLine("bounce: " + coco.GetTenisBall().bounce());
Console.WriteLine("Company: " + coco.GetCompnayName());
Console.WriteLine("Swing: " + coco.GetLeatherBall().swing());
Console.WriteLine("bounce: " + coco.GetLeatherBall().bounce());
BallAbstractFactory dodo=new DODOComapny();
Console.WriteLine("Company: " + dodo.GetCompnayName());
Console.WriteLine("Swing: " + dodo.GetTenisBall().swing());
Console.WriteLine("bounce: " + dodo.GetTenisBall().bounce());
Console.WriteLine("Company: " + dodo.GetCompnayName());
Console.WriteLine("Swing: " + dodo.GetLeatherBall().swing());
Console.WriteLine("bounce: " + dodo.GetLeatherBall().bounce());
public abstract class BallAbstractFactory
public abstract IBall GetLeatherBall();
public abstract IBall GetTenisBall();
public abstract String GetCompnayName();
public class COCOComapny : BallAbstractFactory
public override IBall GetLeatherBall()
return new LeatherBall();
public override IBall GetTenisBall()
public override string GetCompnayName()
public class DODOComapny : BallAbstractFactory
public override IBall GetLeatherBall()
return new LeatherBall();
public override IBall GetTenisBall()
public override string GetCompnayName()
public class TenisBall : IBall
return "Tenis Ball Swing";
return "Tenis Ball Bounce";
public class LeatherBall : IBall
return "Leather Ball Swing";
return "Leather Ball Bounce";