我有一个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对象实现不同的存储行为。
答案 0 :(得分:3)
修改Person::Store()
以便它调用$this->behaviourStorage->store($this)
,然后检查传递给该方法的对象中的字段,或者让它调用$this->behaviourStorage->store()
并使用要存储的字段值。 / p>