@mmix
Hvala na odgovoru
@Valerij Zajcev
Zato što sa tom klasom ništa ne dobijaš. Što se tiče jurenja po programu.. stavi ih u neki zaseban
namespace pa nećeš morati da ih juriš.
Po meni ima smisla koristiti
factory pattern u 2 slučaja:
1. Kada prosleđivanjem parametara u konstruktoru nije dovoljno jasno šta će se zapravo instancirati, pa je umesto toga bolje koristiti deskriptivne nazive, tj.
factory pattern. Ili kada bi se zakomplikovale sve moguće kombinacije parametara u konstruktoru.
Najprostiji mogući primer:
Imaš klasu
Ugao koju instanciraš zadavanjem veličine u stepenima ili radijanima
Code:
class Ugao
{
public static Ugao UStepenima(decimal stepeni)
{
return new Ugao(stepeni);
}
public static Ugao URadijanima(decimal radijani)
{
// pretvori radijane u stepene
return new Ugao(stepeni);
}
private Ugao(decimal stepeni)
{
....
}
}
Ovo može biti dosta komplikovanije ukoliko se radi o nekim složenijim klasama.
2. Kada imaš više različitih klasa koje implementiraju isti interfejs.
Primer:
Code:
class VehicleFactory
{
public enum VehicleType
{
Car,
Bus
}
public static IVehicle CreateVehicle(VehicleType vehicleType)
{
switch (vehicleType)
{
case VehicleType.Car:
return new Car();
case VehicleType.Bus:
return new Bus();
}
}
}
class Car : IVehicle
{
....
}
class Bus : IVehicle
{
....
}
edit: Izmenio sam prvi primer. Klasa krug je zamenjena klasom ugao.
[Ovu poruku je menjao Dejan Carić dana 14.06.2010. u 17:30 GMT+1]