Nedir bu tasarım deseni nedir?

0 Cevap php

Son birkaç gündür ben sınıfları yazmaya oldum ki ilk başta ben Command tasarım deseni yapıştırılır düşündüm, ama ben beri onları modifiye ve hangi desen onlar gerçekten (varsa) ile maç olarak merak ediyorum ettik.

Temel bir örnek Ben bir sayfanın yayınını almak için Facebook API sorgulamak için kullanıyorum bir sınıftır. Benim sınıf bu gibi görünüyor:

class FetchPageFeedCommand extends Command {

    public $feed;

    private $pageId;

    public function __construct($pageId) {
        $this->pageId = $pageId;
    }

    public function execute() {
        if ($feed = Facebook::api('/page/feed') /* psuedo code */ ) {
             $this->feed = $feed;
             return true;
        } else {
             return false;
        }

    }
}

Sonra bu gibi sınıf kullanmak istiyorsunuz:

$com = new FetchPageFeedCommand(12345);
if ($com->execute()) {
   $feed = $com->feed;
   print_r($feed);
}

Anladığım kadarıyla, bir Command nesnesi benim değil bir alıcı nesne, almalıdır. Ve benim müşteri ve invoker ikisi aynı gibi görünüyor. Ben kamu değişkenler ile veri yüküne ve ben Komutanlığı desen uymuyor kesinlikle böyle hissediyorum o gerçeği eklemek.

Daha fazla şeyler geçinip, bana ne hataları izlemek bulunuyor edelim Command üst sınıftan bazı işlevler ekledi. Örneğin:

    public function execute() {
        if ($feed = Facebook::api('/page/feed') /* psuedo code */) {
             $this->feed = $feed;
             return true;
        } else {
             $this->addError('Could not fetch feed'); // Error management
             return false;
        }

Sonra $com->hasErrors() ve $com->getErrors() hataları için test edecek

Şimdiye kadar bu model benim için oldukça iyi çalışıyor. Ben bir tasarım deseni ayrıntıları hep taşa yazılı değil biliyorum, ve bu semantik endişelenecek daha sorunu çözmek için daha önemli olduğunu, ama ben bu konuda gerçekten merak ediyorum ve ben (benim kod artırabilirsiniz görmek istiyorum ya da ben bir şekilde kendime bir mezar kazma ediyorsam).

0 Cevap