Вопрос о шаблоне стратегии - PHP - PullRequest
1 голос
/ 20 декабря 2010

У меня есть класс Person, и я хотел бы использовать шаблон Strategy для добавления поведения хранилища. Как то так

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);

Мой вопрос: как я могу использовать поведение хранилища для сохранения информации об объекте человека? Как передать объект в LocalStorage, чтобы он знал, что сохранить?

Возможно, в конце концов это не правильный шаблон проектирования, но цель ясна: реализовать различные способы хранения для объекта person.

1 Ответ

3 голосов
/ 20 декабря 2010

Либо измените Person::Store() так, чтобы он вызывал $this->behaviourStorage->store($this), а затем изучите поля в объекте, переданном этому методу, либо попросите его вызвать $this->behaviourStorage->store() со значениями полей для хранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...