策略模式问题 - PHP

时间:2010-12-20 06:27:27

标签: php oop design-patterns

我有一个Person类,我想使用策略模式添加存储行为。像这样的东西

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 个答案:

答案 0 :(得分:3)

修改Person::Store()以便它调用$this->behaviourStorage->store($this),然后检查传递给该方法的对象中的字段,或者让它调用$this->behaviourStorage->store()并使用要存储的字段值。 / p>