Bu örnek türü Mac bir nesne döndürür ve farklı bir şey olamaz:
$mac = new Mac();
Bu Mac, bu Mac arayüzünü eşleşen bir sınıf olabilir değil bir alt sınıfı olamaz.
Aşağıdaki örnek türü Mac ya da başka hangi tür fabrika uygun karar bir nesneyi döndürebilir Oysa.
$appleStore = new AppleStore();
$mac = $appleStore->getProduct('mac');
Sen Mac alt sınıflarının, Mac farklı bir modeli temsil eden her bir dizi isteyebilirsiniz. Daha sonra kullanabilmek için bu alt sınıflarından hangisini karar fabrikada kod yazmak. Sen new operatör ile bunu yapamaz.
Yani bir fabrika size nesne yaratma daha fazla esneklik verir. Esneklik genellikle ayırımı ile el ele gider.
Yorumlarınız Re: I never kullanmak demezdim new. Aslında, basit nesne oluşturma çoğunluğu için new kullanırım. Ama istemci kodu yazma kimin ile ilgisi yoktur. Fabrika desen dinamik örneğini sınıfı seçebilirsiniz bir mimari istediğiniz zaman için.
Apple Mağazası örnekte, muhtemelen bir ürün örneğini ve bir alışveriş sepetinize eklemek için bazı basit kod isterim. Eğer new kullanmak ve her farklı ürün türü için farklı nesne türleri varsa yapabilir, bu yüzden size büyük bir case deyimi yazmak olurdu bir new uygun tipte nesne. Eğer bir ürün türü eklemek her zaman, o case bildirimde güncellemek gerekiyor. Ve uygulamanızın diğer bölümlerinde bu case tabloların çeşitli olabilir.
Bir fabrika kullanarak, sadece güncellemek için bir yer olurdu, bu bir parametre almak ve nesnenin doğru türde örneğini bilir. Hiçbir kod değişikliği gerekmez ile app tüm yerler örtülü, yeni türü için destek kazanacaktır. Bu bir takım iseniz tek geliştirici konum olsun veya olmasın bir kazançtır.
Eğer alt tiplerinin çeşitli desteklemek gerekmez Ama yine de, bir fabrika gerekmez. Sadece basit durumlarda new kullanmaya devam.