The Pabrik Metode biasanya dikategorikan oleh pernyataan switch di mana setiap kasus mengembalikan kelas yang berbeda, menggunakan antarmuka akar yang sama sehingga kode panggilan tidak pernah perlu untuk membuat keputusan tentang pelaksanaan.
Pikirkan pabrik validator kartu kredit yang mengembalikan validator berbeda untuk setiap jenis kartu.
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");
}
}
The Abstract Factory adalah di mana Anda memiliki beberapa kelas pabrik beton (bukan Metode Pabrik) berasal dari satu antarmuka yang dapat kembali berbagai jenis dari metode yang berbeda.
Pikirkan manajer permainan catur dengan kelas yang berbeda untuk setiap rangkaian aturan varian.
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();
}
}
Pabrik Abstrak, sangat mirip dengan Strategi, sering dipilih menggunakan Metode Pabrik, tetapi tidak perlu menggabungkannya sehingga itu adalah polanya sendiri.