예제 #1
0
    public function __construct()
    {
        $this->_containers[] = "CD";
        $this->_containers[] = "MP3Archive";
    }
    public function change($originalObject, $newValue)
    {
        $title = $originalObject->title;
        $band = $originalObject->band;
        foreach ($this->_containers as $container) {
            if (!$originalObject instanceof $container) {
                $object = new $container();
                $object->title = $title;
                $object->band = $band;
                foreach ($newValue as $key => $val) {
                    $object->{$key} = $val;
                }
                $object->save();
            }
        }
    }
}
//测试实例
$titleFromDB = "Waste of a Rib";
$bandFromDB = "Never Again";
$mediator = new MusicContainerMediator();
$cd = new CD($mediator);
$cd->title = $titleFromDB;
$cd->band = $bandFromDB;
$cd->changeBandName("Maybe Once More125");