2010-12-20 3 views
1

J'ai une personne de classe et je voudrais en utilisant le modèle de stratégie pour ajouter un comportement de stockage. Quelque chose comme çamodèle stratégie question - PHP

interface Storage{ 
public function store(); 
} 

class LocalStorage implements Storage(){ 
public function store(){ 
.. 
// save in a file 
.. 
} 
} 

class Person{ 
    private $behaviourStorage; 
    private $name; 
    private $age; 

    public function __construct(Storage $objStorage,$name,$age) { 
    $this->behaviourStorage = $objStorage; 
    } 
    public function Store(){ 
    $this->behaviourStorage->store(); 
    } 

    } 

    $objPerson = new Person(new LocalStorage(),'John',32); 

Ma question est, comment puis-je utiliser le comportement de stockage pour enregistrer les informations de la personne objet? Comment passer l'objet au LocalStorage pour qu'il sache quoi sauvegarder?

Peut-être que ce n'est pas le modèle de conception après tout, mais l'intention est claire: mettre en œuvre des comportements différents de stockage pour l'objet personne.

Répondre

3

Modifiez Person::Store() pour qu'il appelle $this->behaviourStorage->store($this), puis examinez les champs de l'objet transmis à cette méthode ou appelez $this->behaviourStorage->store() avec les valeurs de champ à stocker.

+0

C'est parfait: $ this-> behaviourStorage-> magasin ($ this). Le schéma de stratégie est-il appliqué correctement dans cette situation? Merci – danidacar

+1

C'est si le 'Storage' peut obtenir les champs qu'il doit stocker. –