Bir öz-yaratıcısı: Bu nedir desen?

2 Cevap php

Ben temelde veritabanı satır arayüzleri birkaç sınıfları var. Sınıf bir satır zaten (__construct bir alan değer bekliyor) bulunduğunu varsayar yana, sıranın oluşturulması sağlar ve sınıfının bir örneğini döndürür public static fonksiyonu var.

İşte sözde kod (yani bu hatalar ve eksik gelişmeler vardır) örnek:

class fruit {

        public $id;

        public function __construct( $id ) {

                if ( ! is_numeric($id) ) {
                    throw new Exception("Id is not numeric.");
                }
                $this->id = $id;
            $sql = "SELECT * FROM Fruits WHERE id = $id";
            ...
            $this->arrFieldValues[$field] = $row[$value];
        }

    public function __get( $var ) {
        return $this->arrFieldValues[$var];
    }

    public function __set( $var, $val ) {
        $sql = "UPDATE fruits SET $var = " .  mysql_real_escape_string($val) . " WHERE id = $this->id";
    }

        public static function create( $fruit ) {

        $sql = "INSERT INTO Fruits ( fruit_name ) VALUE ( '" mysql_real_escape_string($fruit) . "' )";
        $id = mysql_insert_id();        
        $fruit = & new fruit($id);
            return $fruit;

        }
}

$obj1 = fruit::create( "apple" );
$obj2 = & new fruit( 12 );

What is this pattern called?


Düzenleme: Ben daha çok veritabanı arayüzü işlevleri vardır birine örnek değiştirdi. Çoğu zaman için, bu tür bir sınıf __construct() ile, normal olarak örneği olacaktır. Önce yeni bir satır oluşturmak için gerektiğinde Ama bazen, create() çağırır.

2 Cevap

Ben Factory method pattern düşünüyorum.

Fabrika yöntemi desen fabrikaların kavramını uygulamak için bir nesne yönelimli tasarım modelidir.

Diğer yaradılış desenleri gibi, oluşturulacak nesnenin tam sınıfını belirtmeden nesneleri (ürün) yaratma sorunu ile ilgilenir. Fabrika yöntemi tasarım deseni alt sınıfları daha sonra oluşturulacak ürünün türetilmiş türünü belirtmek için geçersiz kılabilirsiniz nesneleri oluşturmak için ayrı bir yöntem tanımlayarak bu sorunu işler.

Tasarım desenleri kapsamı dışında, Fabrika yöntemi terimi, aynı zamanda temel amacı, nesnelerin oluşturulmasıdır bir fabrika bir yönteme başvurabilirsiniz.

Bu veritabanları ile ilgili olarak, ben bu Data Mapper denebilecek bir şey yakın olduğunu düşünüyorum.

PHP böyle bir şey arıyorsanız, Propel ORM taşımak. İlk örneğe bakın: Eğer neredeyse kod!