फैक्टरी विधि आम तौर पर एक स्विच बयान जहां प्रत्येक मामले में एक अलग वर्ग देता है, कि बुला कोड कार्यान्वयन के बारे में निर्णय लेने के लिए की जरूरत है कभी नहीं एक ही रूट इंटरफ़ेस का उपयोग कर तो द्वारा वर्गीकृत है।
क्रेडिट कार्ड सत्यापनकर्ता कारखाने के बारे में सोचें जो प्रत्येक कार्ड प्रकार के लिए एक अलग सत्यापनकर्ता लौटाता है।
public ICardValidator GetCardValidator (string cardType)
{
switch (cardType.ToLower())
{
case "visa":
return new VisaCardValidator();
case "mastercard":
case "ecmc":
return new MastercardValidator();
default:
throw new CreditCardTypeException("Do not recognise this type");
}
}
सार फैक्टरी जहां कई ठोस कारखाने वर्गों (नहीं फैक्टरी के तरीके) एक इंटरफ़ेस जो अलग अलग तरीकों से कई अलग अलग प्रकार वापस आ सकते हैं से ली गई है।
भिन्न नियमों के प्रत्येक सेट के लिए एक अलग वर्ग के साथ शतरंज के खेल प्रबंधक के बारे में सोचें।
public class StandardChessRulesFactory : IChessRulesFactory
{
public IBoardMapper GetBoardMapper()
{
return new StandardChessBoardMapper();
}
public IKingMover GetKingMover()
{
return new StandardChessKingMover();
}
public IMoveClock GetMoveClock()
{
return new StandardMoveClock();
}
}
public class HexagonalChessRulesFactory : IChessRulesFactory
{
public IBoardMapper GetBoardMapper()
{
return new HexagonalChessBoardMapper();
}
public IKingMover GetKingMover()
{
return new HexagonalChessKingMover();
}
public IMoveClock GetMoveClock()
{
return new StandardMoveClock();
}
}
public class SpeedChessRulesFactory : IChessRulesFactory
{
public IBoardMapper GetBoardMapper()
{
return new StandardChessBoardMapper();
}
public IKingMover GetKingMover()
{
return new StandardChessKingMover();
}
public IMoveClock GetMoveClock()
{
return new SpeedChessMoveClock();
}
}
एक सार फैक्टरी, एक रणनीति की तरह, अक्सर एक फैक्ट्री मेथड का उपयोग करके चुना जाता है, लेकिन उन्हें संयोजित करने के लिए आवश्यक नहीं है, इसलिए यह अपना स्वयं का पैटर्न है।