2015-04-13 2 views
-2

Я хотел бы реализовать abstract factory design pattern. Добавить этот фрагмент:Абстрактная реализация завода в приложении C#

public class Class1 
{ 

    static Ete _ete; 
    static Hiver _hiver; 


    public static void Main(Clothes cl) 
    { 
     _ete = cl.CreateEteClothes(); 
     _hiver = cl.CreateHiverClothes(); 
     Console.WriteLine(_ete.GetMarque()); 
     Console.ReadKey(); 
     Console.WriteLine(_hiver.GetMarque()); 
     Console.ReadKey(); 

    } 
} 


public abstract class Clothes 
{ 
    public abstract Ete CreateEteClothes(); 
    public abstract Hiver CreateHiverClothes(); 

} 


public abstract class ItalianFactory: Clothes 
{ 
    public override Ete CreateEteClothes() 
    { 
     return new TShirtJuve(); 
    } 

    public override Hiver CreateHiverClothes() 
    { 
     return new PullJuve(); 
    } 
} 
public abstract class FrenchFactory : Clothes 
{ 
    public override Ete CreateEteClothes() 
    { 
     return new TShirtPsg(); 
    } 

    public override Hiver CreateHiverClothes() 
    { 
     return new PullPsg(); 
    } 

} 

public abstract class TunisianFactory : Clothes 
{ 
    public override Ete CreateEteClothes() 
    { 
     return new TShirtCa(); 
    } 

    public override Hiver CreateHiverClothes() 
    { 
     return new PullCa(); 
    } 

} 

public abstract class Ete 
{ 
public abstract string GetMarque(); 
} 

public abstract class Hiver 
{ 
    public abstract string GetMarque(); 
} 

public class TShirtJuve: Ete 
{ 

    public override string GetMarque() 
    { 
     return "Juventus T shirt"; 
    } 
} 

public class TShirtPsg : Ete 
{ 

    public override string GetMarque() 
    { 
     return "PSG T shirt"; 
    } 
} 

public class TShirtCa : Ete 
{ 

    public override string GetMarque() 
    { 
     return "club africain T shirt"; 
    } 
} 


public class PullJuve : Hiver 
{ 

    public override string GetMarque() 
    { 
     return "Juventus Pull"; 
    } 
} 

public class PullPsg : Hiver 
{ 

    public override string GetMarque() 
    { 
     return "PSg Pull"; 
    } 
} 
public class PullCa : Hiver 
{ 

    public override string GetMarque() 
    { 
     return "Club africain Pull"; 
    } 
} 

я хотел бы проверить эту реализацию, но я получаю исключение указывает, что подпись главного метода не является приемлемым.

Итак, как я могу исправить свой код, чтобы протестировать эту реализацию шаблона дизайна?

+1

Испытание с использованием единичного теста, а не путем добавления вещей к основному методу –

+0

Я согласен с Erno de weerd ... что такое cl в cl.CreateEteClothes(); Не следует ли создавать новый экземпляр типа? Как _ete = новый TShirtJuve(); _hiver = new PullJuve(); – R4nc1d

+0

Это должно быть переименовано в «Что не так с моим основным методом», поскольку оно не имеет никакого отношения к тому, как реализовать шаблон абстрактной фабрики. –

ответ

2

Вы public static void Main(Clothes cl)

Это должно быть static void Main(string[] args), поскольку это является точкой входа для приложения и может быть только одна точка входа. См. .NET documentation для получения дополнительной информации.

Подпись метода обычно состоит из имени методов, типа возврата и параметров. Ваше приложение ожидает правильную подпись для метода Main, поэтому оно дает вам это исключение.

Смежные вопросы