Bana hemen anlamak için Singleton ve Kayıt desenler çok basit ve kolay ama Fabrika desen henüz 100% yorumlamak için beynimi almak mümkün olmamıştır şey olmuştur. Ben şimdi anlıyorum düşünüyorum, aşağıda örnek bir kod yazdı, gözden ve bu Fabrikası desen doğru kullanımı olup olmadığını söyle lütfen. Örnek PHP olduğunu ...
<?php
/**
* Factory.class.php
*/
class Factory {
public static $_database;
public static $_cache;
public static $_session;
// Build our User object with all it's dependencies
public static function makeUserObject()
{
$user = new User();
$user->setDatabaseObject(self::$_database);
$user->setCacheObject(self::$_cache);
$user->setSessionObject(self::$_session);
return $user;
}
// other objects will be here someday......
}
/**
* User.class.php
*/
class User
{
public function __construct() { }
// inject Database Object
public function setDatabaseObject($databaseConnectionObject)
{
$this->_databaseObject = $databaseConnectionObject;
}
// inject Cache Object
public function setCacheObject($cacheObject)
{
$this->_cacheObject = $cacheObject;
}
// inject Session Object
public function setSessionObject($sessionObject)
{
$this->_sessionObject = $sessionObject;
}
// other methods here for User object...........
}
/**
* index.php Main page that puts it all together
* assume that classes are autoloaded into this page already
*/
// Set our Database + Cache + Session objects into the Factory Object
Factory::$_database = new Databse();
Factory::$_cache = new Cache();
Factory::$_session = new Session();
// Create our User object
// The factory class will build the User object and inject all
// it's dependencies for us =)
$user = Factory::makeUserObject();
?>
Yani temelde Veritabanı, Önbellek ve Session nesneleri Ben bu 3 bağımlılıkları herhangi bir ihtiyacınız olacak her nesne için fabrika sınıfındaki bir yöntem kurmak, sonra da Fabrika nesnesine eklenir (burada gösterilmemiştir) oluşturulan ve elimden edilir onlar da olsun ayarlanmış hangileri. Ben fabrika nesnesi olmadan istiyorsa ben orada doğrudan bağımlılıkları enjekte gibi tek tek sınıfları hala biraz taşınabilir olabilir Bu da nerede yapar. Bu doğru geliyor mu? Eğer bu doğruysa, bu gerçekten kullanışlı geliyor
UPDATE # 1
Bu burada bu ben http://www.potstuck.com/2009/01/08/php-dependency-injection/ bir "fabrika" olarak bakın burada okunan bir blog yazısı kapalı dayanır, ben bir Registry kullanıyorum ve bir sürü insan bir "fabrika" içine bakmak bana tutmak ve Ben bu artcle okudum ama bir "fabrika" değil gibi görünüyor kadar bu konuda okuduğum her şey sadece kafamda tıklayın vermedi?
UPDATE # 2
From wikipedia http://en.wikipedia.org/wiki/Factory_object
In object-oriented computer programming, a factory object is an object for creating other objects. It is an abstraction of a constructor, and can be used to implement various allocation schemes, such as the singleton pattern.
A factory object typically has a method for every kind of object it is capable of creating. These methods optionally accept parameters defining how the object is created, and then return the created object.
Factory objects are used in situations where getting hold of an object of a particular kind is a more complex process than simply creating a new object. The factory object might decide to create the object's class (if applicable) dynamically, return it from an object pool, do complex configuration on the object, or other things.
Yani belki de bu afterall bir şekilde bir "Fabrika nesne" dir ...